在页面上的Symfony(在Twig中)中获取用户名,匿名用户可以访问该用户名


Get username in Symfony (in Twig) on page, which is accessible to anonymous users

是否有一种方法可以访问页面上登录用户的用户名,Symfony 2.6.1中的匿名用户可以访问该用户名?

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

如果我使用{{ app.user.username }},它将显示错误

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

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

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

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

我不确定我是否正确理解了你的问题,但{{ app.user.username }}确实抛出了一个异常,因为如果你没有登录,就没有用户对象。所以只需检查对象是否存在:

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

如果这个提示不是显而易见的,请给我们一些代码。

试试这个

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