есть вопрос,господа гики)
значится есть какой то экш который принимает параметр и ставит его в свой вид,
в коде вида я вызывают хелпер и туда же передаю такой же параметр
итак код,чтобы было понятнее
public function detailAction(){
$this->view->idTab=$this->_request->getParam('idTab');
}
и в виде слудющее
//detai view
echo "blablabla";
print $this->action('addcomment', 'account', 'shop',array('idTab'=>$this->idTab));
дальше идем в экшн addcomment
public function addcommentAction(){
if(false){
$this->view->idTab=$this->_request->getParam('idTab');
}
}
и вид
//addcomment view
if(isset($this->idTab)){
echo "ЭТО БАГ ИЛИ ЧТО";
}
то есть переменные скрипта вида detail копируются полностью в скрипт вида addcomment….Как можно это убрать??
Заранее спасибо за помощь.
6 декабря 2009 в 15:04
Подводя итог, хочу более точно ответить на вопрос о необходимости присутствия контроллера. Задача контроллера – проанализировать запрос, определить какие действия хочет совершить пользователь и соответствующим образом уведомить об этих действиях модель. Вид такой функциональности не обеспечивает. При этом в случае только получения данных действительно можно обойтись без контроллера (точнее действия в нем могут быть просто пустыми), но когда в результате действий пользователя должна измениться модель, без контроллера не обойтись.
25 ноября 2009 в 1:00
Вы оспариваете MVC. Возможно Вы просто о нем спрашивали, но когда отправили нас читать книги из-за того, что мы распинались и пытались объяснить Вам шаблон MVC – то это было слишком.
Ладно, всякое бывает – возможно в чем-то неправы Вы, может в чем и я
Но все-же думаю цель диалога достигнута
22 ноября 2009 в 16:04
Чем же я пру?Говорите по факту а не претензиями
22 ноября 2009 в 15:02
MVC тоже не дураки придумали, так что уж лучше Вам почитать, а не нам. Это довольно стройная идеология, которая обеспечивает максимальную автономность ее трех составляющих. Причем контроллер, получает данные от пользователя и готовит их для модели и вида.
Почитайте например, хотя бы вот это:
//ru.wikipedia.org/wiki/Model-View-Controller
и это
//chtivo.webhost.ru/articles/mvc.php
Тогда у Вас будет меньше глупых вопросов и раздражительных споров.
Ничего личного Просто Вы прете против MVC, хотя состоите в клубе ZF программеров. Нелогично, верно?
21 ноября 2009 в 18:04
Да блин)Вместо того чтобы спорить прочитайте Э. Гамма Р. Хелм Р. Джонсон Дж. Влиссидес "Приемы объектно-ориентированного проектирования.Патерны проектирования
21 ноября 2009 в 14:00
Контроллер существует для связки этих двух частей парадигмы MVC
20 ноября 2009 в 22:05
Хорошо,ну допустим так.Значит вид для вывода,модель для бизнес логики,а зачем тогда контроллер?может он вообще лишний тогда
20 ноября 2009 в 21:00
Бизнес-логика – это логика проекта, а не чтение данных для последующего вывода – это уже результат работы бизнес-логики. В приведенном Вами примере бизнес-логикой занимается модель – именно она знает как и где вытащить данные
20 ноября 2009 в 2:01
а зачем же тогда вообще контроллер?)если всю логику работы приложения можно запихать в вид?вид-это просто шаблон,визуальное представльние,и в нем должна быть логика лишь представления,ну ни как не бизнес логика
20 ноября 2009 в 2:00
Многие думают что вид не может обращаться к модели, но это не верно. На самом деле парадигма MVC запрещает виду менять состояние модели (например сохранять записи), но читать из модели разрешается.
19 ноября 2009 в 3:04
вот и я об этом сразу подумал…
18 ноября 2009 в 13:02
"Вместо него лучше использовать свой помощник вида, который обратится к модели напрямую и отрендерит необходимый кусочек верстки."
MVC сам по себе не предполагает обращение вида в модель на прямую, разве нет?
3 ноября 2009 в 16:04
//framework.zend.com/manual/en/performance.view...
Внизу страницы конкретно про помощник action() с примером.
В двух словах: 1) action() требует очень много ресурсов для отработки поскольку клонирует много объектов 2) семантически, с точки зрения правильного API лучше обращаться из вида напрямую к модели. Для этого нужно чтобы всю необходимую информацию для отображения можно было получить из модели, не трогая контроллер.
3 ноября 2009 в 5:02
> В принципе такой подход не рекомендуется самими разработчиками >ZF. Вместо него лучше использовать свой помощник вида, который >обратится к модели напрямую и отрендерит необходимый кусочек >верстки.
если не затруднит дайте пример кода или линк на обоснование или реализацию этого
3 ноября 2009 в 0:03
Нет, это не баг. Дело в том, что помощник вида action() клонирует помощника действия viewRenderer() для использования в вызываемом действии. А помощник действия viewRenderer() уже автоматически инициализарован в вашем detailAction(), и в нем в свою очередь инициализарован вид с переменной $this->view->idTab. Соответственно этот же объект вида вместе с установленными переменными в результате клонирования viewRenderer используется и в действии addcommentAction().
Из приведенного примера трудно понять, в чем необходимость использования action() в данном случае? В принципе такой подход не рекомендуется самими разработчиками ZF. Вместо него лучше использовать свой помощник вида, который обратится к модели напрямую и отрендерит необходимый кусочек верстки.