Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: MVC - вопрос по формированию html
Но вот допустим у меня шаблон состоит из множества отдельных модулий каждый из которых я хочу поместить в отдельный файл (допустим левоем меню, верхнее меню и контент)
Тогда при таком подходе у меня ничего выходить не будет
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
caballero пишет:
жумла фарева
да, идея оттуда )
----- Чем больше узнаю, тем больше я не знаю.
ondefeat
Отправлено: 31 Марта, 2013 - 15:07:06
Новичок
Покинул форум
Сообщений всего: 2
Дата рег-ции: Март 2013
Помог: 0 раз(а)
я вот даже специально зарегистрировался ради этой темы)
сейчас абсолютно те же вопросы.
попробую несколько развернуть мысль. рискну предположить, что автор, как и я, опирался на статью на Хабре.)
но, в общем-то, не в этом суть.
все бы хорошо, но вот сейчас я решил вынести генерацию меню на основании данных из БД, добавил форму авторизации (соответственно тоже работа с БД).
и становится понятно, что тащить работу с БД в шаблон - не фэн шуй исходя из парадигмы. тащить в модель - не тру, т.к. по сути это должна быть модель общего шаблона (либо одна и та же работа во всех моделях), не имеющая отношения к работе контента. есть мысль вынести в ядро (базовую модель), но тогда этот код нельзя будет использовать повторно.
собственно, вопрос, оставшийся у меня - что и как поменять в реализации, чтобы всем было хорошо.
Ответ DelphinPRO мб и содержит ответы на этот вопрос, но он мне не совсем очевиден. Т.е. подход интересный и понятный, но получается, что в этом случае представление должно работать с данными из БД, что по сути должна делать модель, а связывать их должен контроллер.
В общем, буду рад, если объясните чуть детальней дураку, что именно должны делать эти методы и как (или какие-то иные подходы), или развернете мысль на тему "чувак, ты не так понимаешь MVC".
vanicon
Отправлено: 31 Марта, 2013 - 15:18:51
Частый посетитель
Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010 Откуда: Самара
Помог: 17 раз(а)
Например в yii есть виджеты, которые могут работать с моделью...
----- Так было, так есть и так будет
DelphinPRO
Отправлено: 31 Марта, 2013 - 15:42:30
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
ondefeat пишет:
в этом случае представление должно работать с данными из БД
Ну а почему представление не может обратиться к модели за данными?
В моем случае так и делается. Зачем заморачиваться на парадигме? Мы отделили бизнес-логику от представления данных? да. Шаблоны отдельно, методы получения данных для них отдельно.
----- Чем больше узнаю, тем больше я не знаю.
caballero
Отправлено: 31 Марта, 2013 - 16:59:33
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Ну а почему представление не может обратиться к модели за данными?
Покинул форум
Сообщений всего: 406
Дата рег-ции: Янв. 2012
Помог: 4 раз(а)
есть такая еще такая штука, называется HMVC (Hierarhical MVC), это когда один котроллер, может вызывать другой контроллер, этот процесс называется "forward", также есть методика вызова контроллера из шаблона, в симфони выглядит так:
если шаблоны делаются на пхп, а не шаблонизаторе, тогда да действительно воникает соблазн понатолкать туда какой-то код, в том числе и связанный с прямым доступом к моделям... но это плохая практика ;) наиболее красивый и управляемый код, когда шаблон отрисовывает только уготованные для него данные, а не генерирует их сам для себя...
DeepVarvar
Отправлено: 31 Марта, 2013 - 18:50:19
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
caballero пишет:
вообще то это наиболее логичный путь
digi пишет:
наиболее красивый и управляемый код, когда шаблон отрисовывает только уготованные для него данные
Один сказал одно, другой другое
digi пишет:
не генерирует их сам для себя
Он и не генерирует, он вызывает.
Давай называть все своими именами:
Шаблон - это то, что сливает контроллер после своей работы - забитый данными шаблон.
Лайоут - это шаблон уровнем абстракции на ступень выше - в нем происходят вызовы контроллеров (виджетов, плагинов и пр.), каждый из которых сливает в ответ забитый данными шаблон.
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Шаблон - это то, что сливает контроллер после своей работы - забитый данными шаблон.
шаблон - это то что запускается контроллером. Рендеринг шаблона, в том числе подтягивание данных - не забота контроллера.
кроме того -не нужно смешивать понятия - бизнес-логика (которая в модели) и логика отрисовки страницы.
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
caballero пишет:
шаблон - это то что запускается контроллером. Рендеринг шаблона, в том числе подтягивание данных - не забота контроллера.
кроме того -не нужно смешивать понятия - бизнес-логика (которая в модели) и логика отрисовки страницы.
В чем я не прав? Где я сказал что контроллер рендерит шаблон? А "подтягивание" готовый данных происходит в лайоуте.
digi пишет:
зачем так всё усложнять?
По мне, так по ссылке большая сложность, чем пояснял я.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.