Symfony2用户未在Twig异常控制器中定义



我使用自己的操作来处理twitch中的异常。

# Twig Configuration
twig:
    exception_controller:  MyBundle:Default:showException

问题是,我实际上已经通过了应用程序的身份验证,但在这个特殊的控制器中,令牌为null。

有人有任何想法来解决这个问题吗,因为我在树枝模板中使用了用户对象。

来自文档:

设计自定义错误页面时,常见的陷阱之一是在错误模板(或错误模板继承的任何父模板)中使用is_granted()函数。如果您这样做,您将看到Symfony抛出的异常。

造成此问题的原因是,路由是在安全性之前完成的。如果发生404错误,则安全层未加载,因此is_granted()函数未定义。解决方案是在使用此功能之前添加以下检查:

{% if app.user and is_granted('...') %}
    {# ... #}
{% endif %}

最新更新