在ZF3自定义模块中,我需要拦截一些事件。
在module.config.php
中,函数init()
为:
public function init(ModuleManager $manager)
{
$eventManager = $manager->getEventManager();
$sharedEventManager = $eventManager->getSharedManager();
$sharedEventManager->attach(__NAMESPACE__, MvcEvent::EVENT_DISPATCH, [$this, 'onDispatch'], 100);
$sharedEventManager->attach(__NAMESPACE__, MvcEvent::EVENT_DISPATCH_ERROR, [$this, 'onDispatchError'], 110);
}
在同一个类中,有两个函数:
public function onDispatch(MvcEvent $event)
{
echo 'testOnDispatch';
die;
}
public function onDispatchError(MvcEvent $event)
{
echo 'testOnDispatchError';
die;
}
EVENT_DISPATCH
事件被触发而没有任何问题,但EVENT_DISPATCH_ERROR
没有被触发。经过一些测试,我看到只有EVENT_DISPATCH
事件被触发。
在视图管理器配置中,display_not_found_reason
和display_exceptions
都设置为TRUE
。如果我将EVENT_DISPATCH_ERROR
替换为EVENT_DISPATCH
(两次EVENT_DISPATCH
),则在优先级方面一切正常。
我想念什么?