Intereting Posts
запретить прямой доступ к php-файлу, набрав ссылку в URL-адресе Не помогает ли доступная форма входа в систему сдерживать ботов? Является ли вызов PDOStatement :: closeCursor () необходимым, если объект оператора отключен? Проверьте, индексирован ли URL-адрес Google с помощью PHP Regex сопоставляет строки таблицы в HTML Включить PHP в файлы JavaScript (.js) PHP Typecasting – хорошо или плохо? mysql_num_rows дает ошибку "mysql_num_rows () ожидает, что параметр 1 будет ресурсом" Проблемы с Symfony2 config.php: Примечание: неопределенное свойство: stdClass :: $ vendor-dir, отсутствуют библиотеки поставщиков, как их решить? Стандарты кодирования и длина линии PHP-выпуск проблемы Вытяните выделенные изображения из папки – покажите изображение + имя файла (разделите часть имени файла + расширение файла) PHP str_replace работает неправильно Многочисленные команды PHP SSH Проблемы с PHP с использованием блокировки файловых файлов

Событие отправки Zend Framework 2 не запускается до действия

Мне нужна помощь. Я хочу запустить метод в Zend Framework 2 до запуска действия контроллера. Я поместил свой метод в onBootstrap Module.php, но он не запускается до начала действия.

В Module.php:

public function onBootstrap(MvcEvent $e) { $eventManager = $e->getApplication()->getEventManager(); $moduleRouteListener = new ModuleRouteListener(); $moduleRouteListener->attach($eventManager); $app = $e->getApplication(); $em = $app->getEventManager(); $em->attach(MvcEvent::EVENT_DISPATCH, function($e) { $controller = $e->getTarget(); $controller->Init(); }); } 

Я хочу запустить метод Init (), чтобы мой адаптер был инициализирован до запуска действия, но он не работал, и я всегда получаю это сообщение:
Обрезаемая фатальная ошибка: аргумент 1 передан в Application \ Model \ Members :: __ construct () должен быть экземпляром Zend \ Db \ Adapter \ Adapter, null, вызывается в PATH \ module \ Application \ src \ Application \ Controller \ AdminController. php в строке 39 и определен в PATH \ module \ Application \ src \ Application \ Model \ Members.php в строке 17

Класс участников находится в действии, которое должно выполняться, и его __construct должен иметь действительный объект Adapter, который должен быть инициализирован в методе Init ().

Может ли кто-нибудь мне помочь? Большое спасибо!

Попробуйте другой подход:

Я предполагаю, что ваш контроллер расширяет Zend\Mvc\Controller\AbstractActionController . Переопределите метод родителя onDispatch в вашем контроллере, чтобы сделать то, что вам нужно сделать:

например:

 class YourController extends AbstractActionController { public function onDispatch($event){ $this->Init(); return parent::onDispatch($event); } //your other actions/init methods etc... } 

Вам необходимо установить приоритет> 1 при подключении к событию.

например.

 $em->attach(MvcEvent::EVENT_DISPATCH, function($e) { $controller = $e->getTarget(); $controller->Init(); }, 100); 

Это обеспечивает выполнение кода перед отправкой.