【问题标题】:Problem loading view on EVENT_RENDER_ERROR在 EVENT_RENDER_ERROR 上加载视图时出现问题
【发布时间】:2019-10-31 22:44:10
【问题描述】:

我是 ZF2 的新手,我似乎无法按照我的意愿去做。

我从事的项目偶尔会遇到一些我目前无法捕获的 PDO 异常,因此我希望在应用程序加载时拥有一个通用函数,该函数将在发生此类异常时加载自定义错误页面。

当这些异常发生时,global.php 中的 'exception_template' 没有加载,所以我创建了一个函数,我在 EVENT_RENDER_ERROR 上调用它,我基本上想加载这个视图。

我尝试过这样的事情:

$redirect_view = new ViewModel();
$redirect_view->setTemplate('error/exception');

也试过这个:

$e->setViewModel()->clearChildren();
$e->setViewModel()->addChild($redirect_view);
$e->stopPropagation(true);

但我要么得到这个错误:

[2019 年 5 月 6 日 15:11:19 Europe/Berlin] PHP 致命错误:未捕获异常 'Zend\View\Exception\RuntimeException' 并带有消息 'Zend\View\Renderer\PhpRenderer::render: Unable to render模板“异常” ;解析器无法解析到 /var/www/vhosts/vendor/zendframework/zendframework/library/Zend/View/Renderer/PhpRenderer.php:499 中的文件'

或者这个:

#0 /var/www/vhosts/vendor/zendframework/zendframework/library/Zend/Mvc/Controller/AbstractActionController.php(83): Dashboard\Controller\InboxController->listAction()
#1【内部函数】:Zend\Mvc\Controller\AbstractActionController->onDispatch(Object(Zend\Mvc\MvcEvent))

我只想加载一个普通视图,以防整个项目发生意外错误。

提前谢谢你。

【问题讨论】:

    标签: php templates zend-framework2


    【解决方案1】:

    您可以通过不同方式为您的模块定义自定义错误模板。最常见的——在我看来更简单的方法——是在模块的module.config.php 文件中定义模板的方法。

    return [
        'controllers' => [ 
            /* your controllers here */
        ],
        'routes' => [
            /* your routes go here */
        ],
        'view_manager' => [
            'exception_template' => 'error/exception',
            'template_map' => [
                'error/exception' => __DIR__ . '../view/error/exception.phtml'
            ],
            'template_path_stack' => [
                __DIR__ . '../view',
            ],
        ],
    ];
    

    如您所见,您可以通过template_map 选项添加个人模板。此外,向模板路径堆栈添加一个新路径,zend 框架将遍历堆栈,直到找到异常模板。

    【讨论】:

      猜你喜欢
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      相关资源
      最近更新 更多