1

我试图在我的 zf2 模块中显示错误/异常页面时禁用布局

但没有任何作用

请帮忙

4

4 回答 4

7

我的 Module.php 中的最终解决方案

$eventManager = $e->getApplication()->getEventManager();



        $eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, function($e) {
             $result = $e->getResult();
             $result->setTerminal(TRUE);

            });

它可以工作并且只加载错误/404视图文件而不是布局文件

谢谢安德鲁

于 2013-02-07T20:46:48.643 回答
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)
{
     ....
}
于 2013-02-06T13:39:47.107 回答
0

这不是你的答案,但它会对 zf2 中的其他人有所帮助

 public function indexAction()
    {    
        echo "json"
        return $this->getResponse();
    }
于 2015-05-06T12:18:47.940 回答
0

最简单的方法是使用配置config/autoload/local.php

return array(
    'view_manager' => array(
        'display_exceptions' => false
    )
);

添加此行将禁用异常。此外,您可以local.php在开发服务器上使用自己的。

于 2015-12-19T23:36:22.647 回答