【问题标题】:Which templates should be overridden in Symfony 2 error customization?在 Symfony 2 错误定制中应该覆盖哪些模板?
【发布时间】:2012-07-24 22:45:27
【问题描述】:

来自documentation

所有错误模板都存在于 TwigBundle 中。覆盖 模板,我们只是依靠标准方法来覆盖 存在于包中的模板。

还有:

要查看默认错误模板的完整列表,请参阅 TwigBundle 的 Resources/views/Exception 目录。

查看后述目录i can find several files。我对 403、404 和 500 错误的自定义模板感兴趣,所以我创建了 error.html.twig(父模板)和 error403.html.twigerror404.html.twigerror500.html.twig,它们从 'TwigBundle:Exception:error.html.twig' 扩展而来(被我的自定义父模板覆盖)。

这是正确的吗?如果抛出另一种错误或异常会发生什么?

【问题讨论】:

    标签: symfony twig


    【解决方案1】:

    是的,它是正确的。

    所有其他类型的异常都会被内核捕获并渲染 error500.html.twig 页面。

    要对其进行测试,您可以暂时关闭调试,方法是切换传递给 app_dev.php 中的 AppKerner 构造函数的第二个参数

    $kernel = new AppKernel('dev', false);

    那你就可以了

    1. 输入错误地址以测试 404 错误页面
    2. 抛出任何异常来测试 500 错误页面

    抛出新的\Exception(); // 测试 500 错误页面

    1. 投掷

    抛出新的 \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException();

    扔新的 \Symfony\Component\HttpKernel\Exception\HttpException(403); //测试403错误页面

    【讨论】:

    • 是的,它与我的问题有关。顺便说一句,exception.html.twig 模板永远不是渲染器,对吗?
    • 对不起,我错过了你的帖子。
    • 我刚刚测试过,在调试模式下会呈现 exception.html.twig。有用,之前不知道,所以我在做关闭/打开调试的技巧
    • @gremo 首先感谢您发布这个问题。你能描述一下你如何覆盖所有异常页面。我做了但没有成功。你能帮我吗我想要三页 error.html.twig , 403.html.twig, 404.html.twig.
    • @KunwarSiddharthSingh 尝试按照手册中的说明进行操作 symfony.com/doc/current/cookbook/controller/error_pages.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    相关资源
    最近更新 更多