根据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
模式下将这些信息获取到我的模板的任何想法?
答案 0 :(得分:3)
我在文档中发现我描述的问题是设计使然。从文档中:
安全和404页¶
由于路由和安全性的顺序 加载后,您的404页上将不会提供安全信息。 这意味着它将看起来像您的用户已从 404页(在测试时可以使用,但不能在生产中使用)。
答案是创建自己的异常控制器(或扩展默认的ExceptionController
)。