Как передать данные из Controller Foo в представление на панели контроллера? - PullRequest
0 голосов
/ 10 июня 2011

В Zend меня интересует передача данных с одного контроллера в представление на другом контроллере.

Например, у меня есть контроллер поиска, целью которого является использование модели поиска для запроса SOLR, и я хочу, чтобы Index Controller вызывал его из представления (через ajax или другие средства), и чтобы контроллер поиска возвращал данные этому Посмотреть. Это возможно? И есть ли лучший способ сделать это?

Заранее спасибо.

1 Ответ

2 голосов
/ 10 июня 2011

Если вы хотите сделать это с помощью AJAX, то вам просто нужно, чтобы ваш клиентский скрипт (я полагаю, javascript) инициировал запрос к URL, соответствующий поиску, который вы хотите выполнить. Вы, вероятно, настроили бы контроллер поиска / действие для использования переключателя контекста так, чтобы он доставлял результаты в формате (я полагаю, json или xml) в формате, используемом вашим клиентским кодом.

Недостатками этого подхода являются: выполнение двух полных запросов, включая накладные расходы HTTP, для получения данных; Вы не получите ничего для клиентов без JS.

В качестве альтернативы пусть индексный скрипт представления вызывает помощник представления действия - вызывается с помощью $this->action($action, $controller, $module, $params) - для непосредственного получения данных. Опять же, вы можете использовать переключатель контекста или флаг param, чтобы не предоставлять HTML-код для полного макета сайта, а только для результатов поиска.

Наконец, вы можете перенести эту функцию поиска в класс обслуживания, чтобы и контроллер индекса, и контроллер поиска могли использовать его независимо. Затем контроллер просто присваивает эти результаты представлению обычным образом.

Лично я склонен к сервисному подходу.

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