每当我的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');
});
}
我尝试以低(负)优先级和高正优先级注册这些,但没有区别。