Model view controller ZF2:禁用错误页面布局

Model view controller ZF2:禁用错误页面布局,model-view-controller,exception,zend-framework2,zend-view,Model View Controller,Exception,Zend Framework2,Zend View,我试图在zf2模块中显示错误/异常页面时禁用布局 但什么都不管用 请帮助如果您查看Zend Framework 2 MVC模块,您将看到这方面的可能性 DispatchListener.php try { $return = $controller->dispatch($request, $response); } catch (\Exception $ex) { $e->setError($application::ERROR_EXC

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

但什么都不管用


请帮助

如果您查看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)
{
     ....
}

如果您查看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)
{
     ....
}

mymodule.php中的最终解决方案

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



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

            });
它工作正常,只加载错误/404视图文件,不加载布局文件


感谢andrew

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

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



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

            });
它工作正常,只加载错误/404视图文件,不加载布局文件


谢谢andrew,这不是您的ans,但它会帮助其他人 在zf2中


这不是你的ans,但它会帮助其他人 在zf2中


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

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

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

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

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

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

因此,如果我在我的module.php引导函数中覆盖EVENT\u DISPATCH\u ERROR并禁用布局,该布局会起作用吗?如果我在module.php引导函数中覆盖EVENT_DISPATCH_ERROR并禁用布局,那么如何禁用布局呢?如何禁用布局dispatch.error事件在我的案例中从未触发(我使用的是github的zf2框架),尽管显示了404错误。有什么想法吗?在我的例子中,dispatch.error事件从未触发过(我使用的是github的zf2框架),尽管显示了404错误。有什么想法吗?