[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: MVC и Yii2.
clocwerk
Здравствуйте, последнее время работаем с yii2, и вот заметил такую вещь, во многих вьюхах yii2 используем примерно такой код:

<?= $form->field($model, 'post_id')
->
dropDownList(ArrayHelper::map(\common\models\Posts::find()->all(), 'id', 'name_short')) ?>

Т.е. получается обращаемся к модели Posts из вью. Всю жизнь считал что по идеологии MVC, вью вобще ничего не должна знать о модели, т.е. например вот эту часть:
ArrayHelper::map(\common\models\Posts::find()->all(), 'id', 'name_short')

нужно вынести в контроллер, но если так, то получиться большой толстый контроллер, потому что не только модель Posts так используется, а собственно все методы $form, напрмер dropDownList, radioList, checkBoxList и т.д.
Как вы считаете как правильно нужно делать? С одной стороные нарушать принципы mvc, а с другой создавать огромные контроллеры?
Arh
Всю жизнь считал что по идеологии MVC, вью вобще ничего не должна знать о модели

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



_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
cheevauva
clocwerk, в вебе можем быть разная интерпретация MVC, иногда V может иметь доступ к модели, но не иметь доступ к C. В твоём же примере тупо протёкщие абстракции.
Another Reality
Насколько я знаю, в ситуациях, когда вьюшка "активная" и запрашивает данные у модели, они должны возвращаться через контроллер.
Иначе, такое построение начинает походить на попытку перекостылить MVC в MVVM.
Мальтиец
Цитата
. Всю жизнь считал что по идеологии MVC, вью вобще ничего не должна знать о модели,

Что, тут - $form->field($model, 'post_id') - совсем уж ничего не знает о модели? А завязка на имени поля post_id?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.