метод init в контроллере zf2

В Zendframework 1 мы используем метод init() для инициализации вещей в контроллере. Я видел, что это взято из zenframework 2. Почему? и как лучше всего добиться того же в zf 2. Я обновляю свой предыдущий проект, разработанный в zf1, и вижу, что в zf2 многое изменилось по сравнению с zf1.

Есть ли какие-либо другие изменения в zf2, как мы используем другие методы, такие как preDispatch() и postDispatch() в zf1?

Кто-нибудь прошел через это?


person Developer    schedule 13.08.2012    source источник


Ответы (3)


В zf2 контроллеры создаются ControllerLoader, который является подклассом ServiceManager. Если вам нужно инициализировать контроллер, используйте Factory или __construct. Используйте __construct для простой инициализации и используйте Factory, если контроллер потребляет другие объекты, которые необходимо внедрить.

preDispatch и postDispatch также заменены новой системой событий. Чтобы получить такой же результат в zf2, зарегистрируйте обработчики событий disptach и render. Полный список событий mvc см. на http://akrabat.com/zend-framework-2/a-list-of-zf2-events/

Кроме того, взгляните здесь на пример настройки фабрики контроллеров контроллер">ZF2 как получить диспетчер сущностей из-за пределов контроллера

person superdweebie    schedule 13.08.2012
comment
В дополнение к акрабатам полный список событий блог Мэтью У.О'Финни mwop.net/blog/2012-07-30-the-new-init.html - person Sam; 14.08.2012
comment
Спасибо Сэм, эта ссылка действительно полезна. - person Developer; 14.08.2012

Я думаю, вы можете бросить это в контроллер, и он будет работать.

public function onDispatch(MvcEvent $e)
person Tom Shaw    schedule 22.04.2013
comment
это ответ, который мне понравился. - person Ismael; 20.05.2014
comment
Господи спасибо, почему в ZF2 все так запутано - person Jonathan dos Santos; 07.03.2018

Поскольку OP упоминает postDispatch, стоит отметить, что __destruct теперь работает аналогичным образом. Однако одно большое отличие состоит в том, что выполнение нельзя предотвратить (например, с помощью exit;) путем разборки объекта.

person Kafoso    schedule 11.01.2015