在Symfony(在Twig)页面获取用户名,匿名用户可以访问
Get username in Symfony (in Twig) on page, which is accessible to anonymous users
有没有办法访问页面上已登录用户的用户名,Symfony 2.6.1 中的匿名用户可以访问该用户名?
示例:
我有主页,link 在哪里登录,如果有用户登录,我想将他的用户名显示为 link 到他的帐户而不是登录名 link。
如果我使用{{ app.user.username }}
会显示错误
Impossible to access an attribute ("username") on a NULL variable ("")
因为 app.user
在 security: false
定义为 security.yml 的页面上是空对象。它只适用于需要在没有 security: false
.
的防火墙下的页面
我不确定我是否正确理解了你的问题,但 {{ app.user.username }}
确实会抛出一个异常,因为如果你没有登录就没有用户对象。所以只要检查对象是否存在:
{% if app.user is defined %}
{# link to account #}
{% else %}
{# link to login #}
{% endif %}
如果这个提示不是预期的提示,请给我们一些代码。
您应该尝试这样的操作:
为匿名设置默认值:
{{ app.user.username|default('Not Logged') }}
试试这个
{{ app.security.getToken().getUser() }}
有没有办法访问页面上已登录用户的用户名,Symfony 2.6.1 中的匿名用户可以访问该用户名?
示例: 我有主页,link 在哪里登录,如果有用户登录,我想将他的用户名显示为 link 到他的帐户而不是登录名 link。
如果我使用{{ app.user.username }}
会显示错误
Impossible to access an attribute ("username") on a NULL variable ("")
因为 app.user
在 security: false
定义为 security.yml 的页面上是空对象。它只适用于需要在没有 security: false
.
我不确定我是否正确理解了你的问题,但 {{ app.user.username }}
确实会抛出一个异常,因为如果你没有登录就没有用户对象。所以只要检查对象是否存在:
{% if app.user is defined %}
{# link to account #}
{% else %}
{# link to login #}
{% endif %}
如果这个提示不是预期的提示,请给我们一些代码。
您应该尝试这样的操作:
为匿名设置默认值:
{{ app.user.username|default('Not Logged') }}
试试这个
{{ app.security.getToken().getUser() }}