【问题标题】:Slim framework: Display an error page using TwigSlim 框架:使用 Twig 显示错误页面
【发布时间】:2021-04-18 02:05:43
【问题描述】:

当我的 slim3 应用程序出现问题时,我想在生产环境中显示自定义视图(使用 twig 视图)。

我阅读了the documentation concerning error handling,但我无法让处理程序显示树枝视图。

所以这是有效的(在我的浏览器中显示错误消息):

if ('development' !== $container->get('settings')['environment']) {
    $container['errorHandler'] = function($c) {
        return function ($request, $response, $exception) use ($c) {
            $c->get('logger')->critical("An error occured", [$exception->getMessage()]);

            return $response->write('An error occurred (message: "' . $exception->getMessage(). '").');
        };
    };
}

但这不起作用,即。它没有使用模板显示视图(相反,我在浏览器中看到了一个空白页面):

if ('development' !== $container->get('settings')['environment']) {
    $container['errorHandler'] = function($c) {
        return function ($request, $response, $exception) use ($c) {

            $exceptionMessage = $exception->getMessage();
            $settings = $c->get('settings');
            $view = $c->get('view');
            $data = [
                'app' => $settings['app'],
                'title' => 'Error',
                'exceptionMessage' => $exceptionMessage
            ];

            $c->get('logger')->critical("An error occured", [$exception->getMessage()]);

            return $view->render($response, '500.twig', $data);
        };
    };
}

我真的不明白为什么它不起作用。有什么想法吗?

【问题讨论】:

    标签: error-handling twig slim


    【解决方案1】:

    错误处理程序无法捕获所有错误。由于 PHP 处理致命/解析错误的方式,它不会捕获 PHP 致命错误和语法错误。不幸的是,在 PHP 中没有办法处理这些类型的错误。一个示例可能是语法错误或内存不足错误。两者都无法恢复

    【讨论】:

      【解决方案2】:

      只是添加一个观察, 让 twig 渲染任何东西,通常你 echo $view->render ...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-22
        • 1970-01-01
        • 2012-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多