Несложная концепция стратегии в Zend Framework 2 - это поведение, которое приложение должно соблюдать, когда события запускаются во время цикла приложения MVC, что фактически является событийным событием.
С практической точки зрения, стратегия в основном прослушиватель события, как правило, конкретный экземпляр \Zend\EventManager\AbstractListenerAggregate
, и обычно слушает \Zend\Mvc\MvcEvent
различные события, как EVENT_RENDER
и EVENT_RENDER_ERROR
.
Слушателя прикрепляется к \Zend\EventManager\EventManager
, а затем, с помощью упомянутых выше \Zend\Mvc\MvcEvent
, чтобы получить доступ ко всем основным ресурсам цикла MVC (маршрутизатор, запрос, ответ, само приложение, и т.д.), слушатель может проверить состояние из приложения и изменить его поток.
В примере, предоставленном официальными документами ZF2, слушатель проверяет заголовки принятия запроса, выбирает средство визуализации и соответственно изменяет ответ.
Это немного старое, поэтому я бы предложил взглянуть на некоторых лучшие примеры чтения коды стратегий основных предусмотренных рамок, т.е. \Zend\Mvc\View\Http\RouteNotFoundStrategy
, который слушает EVENT_DISPATCH
и EVENT_DISPATCH_ERROR
обрабатывать рендеринг страниц 404 ошибок ,
Также жизненно важно, чтобы вы понимали, как работает весь EventManager
. Официальные документы для этого неплохие, плюс много об этом, если вы рекламируете Google.
Немного в стороне от объема вашего вопроса, но то, что вам нужно, фактически было преобразовано в 'ControllerPlugin', который называется ['approViewModelSelector()'] (http://zf2.readthedocs.org/en/latest/ модули/zend.mvc.plugins.html # Зенд-MVC-контроллер-плагинов-acceptableviewmodelselector). Это должно покрыть то, что вам нужно;) – Sam
Эй, Сэм! Спасибо за подсказку! Фактически я реализовал его с помощью ['AcceptableViewModelSelector'] (http://framework.zend.com/manual/2.1/en/modules/zend.mvc.plugins.html#zend-mvc-controller-plugins-acceptableviewmodelselector) , Но теперь у меня есть две проблемы с ним: 1. Если 'Accept' содержит несколько типов, запрос автоматически пересылается в' PhpRenderer'. 2. Я не могу установить 'script_paths' для JSON/XML (для предварительной обработки данных для вывода, s. [Здесь] (http://stackoverflow.com/questions/17275230/how-to-handle-multidimensional-output -с-гнездовые-листы, с помощью самой таблицы-gatewa)). – automatix
не слишком хорошо знаком с этим, извините. Множество принимающих заголовков на самом деле не мой регион: D – Sam