Events 所附活动的优先事项
从事件管理器的优先级参数到影响事件执行顺序的方法。在我的模块中,我附加了后处理Events 所附活动的优先事项,events,zend-framework2,Events,Zend Framework2,从事件管理器的优先级参数到影响事件执行顺序的方法。在我的模块中,我附加了后处理 /** @var \Zend\ModuleManager\ModuleManager $moduleManager */ $moduleManager = $e->getApplication()->getServiceManager()->get('modulemanager'); /** @var \Zend\EventManager\SharedEventManager
/** @var \Zend\ModuleManager\ModuleManager $moduleManager */
$moduleManager = $e->getApplication()->getServiceManager()->get('modulemanager');
/** @var \Zend\EventManager\SharedEventManager $sharedEvents */
$sharedEvents = $moduleManager->getEventManager()->getSharedManager();
$sharedEvents->attach(
'Zend\Mvc\Controller\AbstractRestfulController',
MvcEvent::EVENT_DISPATCH, array($this, 'postProcess'),
1
);
它工作正常,即在我的控制器中执行getList操作。但不会在期权行动中触发。任何大于1的值都会触发后处理
所以我的问题是:从文档来看,优先级应该影响事件的顺序。但在这个特殊的情况下,它会影响它是否被触发。为什么呢?这是某种错误吗?如果返回
响应
实例,调度事件将短路,在这种情况下,不会访问其他侦听器。听起来这就是你正在发生的事情。至于原因,在不知道您可能附加到该事件的其他侦听器或控制器操作返回的数据类型的情况下,很难诊断。我的控制器返回数组,然后后处理生成json。我没有附加任何其他事件(但在调试时,我注意到一些Zend开箱即用事件)。我的镜头是(从你所说的):因为选项不应该用body来响应,而只应该用headers来响应-之前的某个事件返回Response
,所有其他事件都被终止(?)