在树枝自定义错误消息中,app.user变量为空(或不可用?)

时间:2019-04-06 17:43:39

标签: symfony twig symfony4

根据symfony docs,变量app可用于树枝模板的“无处不在”。我想在自定义错误消息中使用app.user,但是在prod模式下,这些变量实际上在这些模板中似乎不可用;它在dev模式下可用。

示例代码:

// project/templates/bundles/TwigBundle/Exception/error404.html.twig
{% extends 'base.html.twig' %}
{% block body %}
    {{ parent() }}

    <div>
        <h1>Page not found</h1>

        <p>
            Hello {{ app.user.name }}, {% <---- DOES NOT WORK %}

            The requested page couldn't be located. Checkout for any URL
            misspelling.
        </p>
    </div>
{% endblock %}

这只是一个简单的示例,但说明了这一点。我也尝试过使用

{% if is_granted('IS_AUTHENTICATED_FULLY') %}
   // do something fancy
{% endif %}

,这也不起作用。我扩展base.html.twig还是拉入parent()也都没有关系,在所有情况下都行不通。我没有收到任何错误消息。我已经按缓存清除了。

关于如何在prod模式下将这些信息获取到我的模板的任何想法?

1 个答案:

答案 0 :(得分:3)

我在文档中发现我描述的问题是设计使然。从文档中:

  

安全和404页¶

     

由于路由和安全性的顺序   加载后,您的404页上将不会提供安全信息。   这意味着它将看起来像您的用户已从   404页(在测试时可以使用,但不能在生产中使用)。

答案是创建自己的异常控制器(或扩展默认的ExceptionController)。