访问控制器进行调度错误处理

时间:2018-08-03 01:05:56

标签: events zend-framework zend-framework3

我有一个事件,它对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应用程序中的共享事件管理器中以进行分派错误处理吗?如果没有,我如何访问用于错误分配的控制器。

0 个答案:

没有答案