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

时间:2016-01-05 09:29:58

标签: symfony twig symfony-security

我使用自己的动作来处理树枝中的异常。

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

问题是,我实际上已经对我的应用程序进行了身份验证,但在这个特殊的Controller中,令牌为空。

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

1 个答案:

答案 0 :(得分:-1)

来自docs

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

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

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