我试图在我的 zf2 模块中显示错误/异常页面时禁用布局
但没有任何作用
请帮忙
我的 Module.php 中的最终解决方案
$eventManager = $e->getApplication()->getEventManager();
$eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, function($e) {
$result = $e->getResult();
$result->setTerminal(TRUE);
});
它可以工作并且只加载错误/404视图文件而不是布局文件
谢谢安德鲁
如果您查看 Zend Framework 2 MVC 模块,您将看到这种可能性。
DispatchListener.php
try {
$return = $controller->dispatch($request, $response);
} catch (\Exception $ex) {
$e->setError($application::ERROR_EXCEPTION)
->setController($controllerName)
->setControllerClass(get_class($controller))
->setParam('exception', $ex);
// look here...
$results = $events->trigger(MvcEvent::EVENT_DISPATCH_ERROR, $e);
$return = $results->last();
if (! $return) {
$return = $e->getResult();
}
}
您可以看到当您在控制器内部抛出异常时触发的 MvcEvent,还有一些其他进程附加到此事件。
您可以将方法附加到此事件并做任何您想做的事情。
作为一个例子,看看 ExceptionStrategy.php
public function prepareExceptionViewModel(MvcEvent $e)
{
....
}
这不是你的答案,但它会对 zf2 中的其他人有所帮助
public function indexAction()
{
echo "json"
return $this->getResponse();
}
最简单的方法是使用配置config/autoload/local.php
return array(
'view_manager' => array(
'display_exceptions' => false
)
);
添加此行将禁用异常。此外,您可以local.php
在开发服务器上使用自己的。