我有一个事件,它对shared event manager
使用Zend\Mvc\Controller\AbstractController
public function attach(EventManagerInterface $events,$priority=10) {
$events->getSharedManager()->attach('Zend\Mvc\Controller\AbstractController',
MvcEvent::EVENT_DISPATCH,[$this,'changeLayout'],30);
}
这是连接到共享事件管理器的方法:
public function changeLayout(MvcEvent $e) {
$pageMeta = \Selector\Selector::getConfigurer()->getEnvironmentModel()->getPageMeta();
$layout = $pageMeta->getLayout();
$e->getTarget()->layout($layout);
}
不幸的是,我不得不为调度错误事件创建一个单独的事件。当发生调度错误时,我不确定会发生什么,但不再使用Zend\Mvc\Controller\AbstractController
共享事件
public function attach(EventManagerInterface $events,$priority=1000) {
$this->listeners[] = $events->attach(MvcEvent::EVENT_DISPATCH_ERROR,
array($this,'changeLayout'), $priority
);
因此现在调用失败:
public function changeLayout(MvcEvent $e) {
$pageMeta = \Selector\Selector::getConfigurer()->getEnvironmentModel()->getPageMeta();
$layout = $pageMeta->getLayout();
$e->getTarget()->layout($layout);
}
使用Fatal error: Uncaught Error: Call to undefined method Zend\Mvc\Application::layout()
我想知道,我应该挂接到zend mvc应用程序中的共享事件管理器中以进行分派错误处理吗?如果没有,我如何访问用于错误分配的控制器。