Я использую Restful Controller и при определенных условиях хотел бы запустить триггер MvcEvent::EVENT_DISPATCH_ERROR
и немедленно прекратить выполнение контроллера. В моем классе Module
я подключил прослушиватель событий для этого, но я не могу найти способ его запуска с контроллера представления.ZF2 - Trigger MvcEvent :: EVENT_DISPATCH_ERROR from View Controller
Моего Module
код:
public function onBootstrap(MvcEvent $mvcEvent) {
$eventManager = $mvcEvent->getApplication()
->getEventManager();
$eventManager->attach(array(MvcEvent::EVENT_DISPATCH_ERROR, MvcEvent::EVENT_RENDER_ERROR), array($this, 'error'));
}
public function error(MvcEvent $mvcEvent) {
echo $mvcEvent->getError();
die();
}
и мой код Контроллера:
public function indexAction() {
$mvcEvent = $this->getEvent();
$mvcEvent->setError('test-error-code');
$mvcEvent->getTarget()->getEventManager()->trigger(MvcEvent::EVENT_DISPATCH_ERROR, $mvcEvent);
return;
}
Есть ли причина, вы хотите, чтобы вызвать событие против бросать исключение? Исключение вызовет его. –
@TimKlever Да потому, что выбрасываемое исключение является более общим, и я хочу поймать его в определенное время, чтобы вернуть другое сообщение об ошибке. Если я просто проверю ошибку на исключении типа исключения, я получаю только общую ошибку, а не конкретную, которую я действительно хочу. – shiznatix