ZF2:在异常时更改布局

时间:2016-09-02 00:41:43

标签: layout exception-handling zend-framework2 zend-view

每当我的ZF2应用程序中出现异常时,我想以自定义布局显示它。 (自定义布局非常普遍,即不使用任何应用程序变量)。

我对默认视图模板感到满意,即错误/ 404和错误/索引,但我希望它们使用不同的布局进行渲染。

这是我的设置:

'view_manager' => array(
    'display_not_found_reason' => true,
    'display_exceptions'       => true,
    'not_found_template'       => 'error/404',
    'exception_template'       => 'error/index',
    'layout'                   => 'layout/secure',
    .....

目前,使用' layout / secure'呈现所有例外情况。 layout,它使用一些应用程序变量(例如用户名)。什么时候布局/安全'无法渲染(例如,因为用户未登录),它会抛出第二个错误。

我尝试按照以下代码覆盖dispatch.error和render.error上的布局,但它仍尝试渲染安全布局。

public function onBootstrap(MvcEvent $e)
{
    $eventManager = $e->getApplication()->getEventManager();

    $eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, function(MvcEvent $event) {
        $viewModel = $event->getViewModel();
        $viewModel->setTemplate('layout/vanilla');
    });

    $eventManager->attach(MvcEvent::EVENT_RENDER_ERROR, function(MvcEvent $event) {
        $viewModel = $event->getViewModel();
        $viewModel->setTemplate('layout/vanilla');
    });
}

我尝试以低(负)优先级和高正优先级注册这些,但没有区别。

0 个答案:

没有答案