【问题标题】:Get username in Symfony (in Twig) on page, which is accessible to anonymous users在页面上获取 Symfony(在 Twig 中)中的用户名,匿名用户可以访问该用户名
【发布时间】:2015-03-03 11:46:51
【问题描述】:

有没有办法访问页面上登录用户的用户名,在 Symfony 2.6.1 中匿名用户可以访问该用户名?

示例: 我有主页,登录链接在哪里,如果有用户登录,我想将他的用户名显示为他的帐户链接而不是登录链接。

如果我使用{{ app.user.username }} 会显示错误

Impossible to access an attribute ("username") on a NULL variable ("")

因为app.user 是页面上的空对象,security: false 定义为 security.yml。它只适用于页面,需要在没有security: false的防火墙下。

【问题讨论】:

    标签: php authentication twig symfony-2.6


    【解决方案1】:

    你应该试试这样的:
    为匿名设置默认值:

    {{ app.user.username|default('Not Logged') }}
    

    【讨论】:

      【解决方案2】:

      我不确定我是否正确理解了您的问题,但{{ app.user.username }} 确实会引发异常,因为如果您未登录,则没有用户对象。所以只需检查该对象是否存在:

      {% if app.user is defined %}
          {# link to account #} 
      {% else %}
          {# link to login #}
      {% endif %}
      

      如果这个提示不是预期的,请给我们一些代码。

      【讨论】:

      • 但即使“app.user”未定义,我也想获取用户名。有可能吗?
      • 那么你必须通过id获取用户对象。类似$this->getDoctrine()->getRepository('User')->find($id)
      【解决方案3】:

      试试这个

      {{ app.security.getToken().getUser() }}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-15
        • 1970-01-01
        • 2013-05-25
        • 2012-10-26
        • 1970-01-01
        • 1970-01-01
        • 2015-09-19
        • 2015-10-16
        相关资源
        最近更新 更多