我试图在我的zf2模块中显示错误/异常页面时禁用布局
但没有任何作用
请帮助
答案 0 :(得分:7)
我的Module.php中的最终解决方案
$eventManager = $e->getApplication()->getEventManager();
$eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, function($e) {
$result = $e->getResult();
$result->setTerminal(TRUE);
});
它可以工作,只加载错误/ 404视图文件而不是布局文件
谢谢安德鲁
答案 1 :(得分:3)
如果你看看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)
{
....
}
答案 2 :(得分:0)
这不是你的问题,但它对其他人有帮助 在zf2
public function indexAction()
{
echo "json"
return $this->getResponse();
}
答案 3 :(得分:0)
最简单的方法是使用config config/autoload/local.php
return array(
'view_manager' => array(
'display_exceptions' => false
)
);
添加此行可禁用异常。此外,您可以在开发服务器上使用自己的local.php
。