Это нормально, если помощник будет взаимодействовать с моделью? - PullRequest
2 голосов
/ 11 апреля 2011

Это нормально, если помощник будет взаимодействовать с моделью или нет?

Например, у меня есть помощник, генерирующий пользовательский <select> для выбора категорий. Прямо сейчас я извлекаю данные для этого <select> в Controller (используя Model, конечно), а затем назначаю их для View.

Но есть и другой способ сделать. Просто поместите взаимодействие с Model в Helper. Это сделает код контроллера более простым и поможет нам избежать дублирования кода.

Есть идеи?

Ответы [ 4 ]

1 голос
/ 11 апреля 2011

я бы сказал "НЕТ" =) лучше держать его в контроллере, потому что если есть проблема с моделью, вам придется управлять ею с точки зрения .. или что произойдет, если позже вы захотите добавить некоторые ограничения, например: отображать select, только если пользователь вошел в систему, или отображать только несколько опций и т. д.

Я бы создал метод для модели, чтобы получить список элементов. Я бы вызвал этот метод из контроллера для управления ответом (не авторизован, не найден и т. Д.) И выберите / измените соответствующее представление для отображения информации.

но это только я =)

Удачи!

1 голос
/ 11 апреля 2011

Насколько я видел, доступ к данным модели из любого места считается нормальным, но изменение данных должно выполняться только в контроллере (который действует на действие).

1 голос
/ 11 апреля 2011

Если вы генерируете элементы управления HTML с помощью этого помощника, то вам, вероятно, следует исключить помощника из вашей модели. Ваша модель должна беспокоиться только о самих данных, а не о том, как они отформатированы или что с ними делается.

Лучше было бы внедрить модель в помощник: это следует шаблону внедрения зависимостей и позволит вам выполнить модульное тестирование.

0 голосов
/ 11 апреля 2011

Помощники обычно используются, чтобы «помогать» вам делать что-то. Я думаю, что на самом деле не имеет большого значения, используете ли вы их внутри контроллера или модели или обоих.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...