如果我在会话中存储了一个用户对象,我可以使用以下内容检索twig中的用户名:
app.session.get('user').UserName
Run Code Online (Sandbox Code Playgroud)
但是我的用户对象(UserInterface)驻留在安全上下文中,更具体地说是在userToken(TokenInterface)对象的用户字段中.如何从twig访问用户对象内的值?我正在考虑以下方面的事情:
app.security.context.token.user.[my_user_property]
Run Code Online (Sandbox Code Playgroud)
Pro*_*tic 23
安全上下文可从app全局获得security:
{{ app.security.getToken().getUser() }}
Run Code Online (Sandbox Code Playgroud)
将输出用户对象的字符串表示形式(或"anon."如果您尚未登录,但已通过身份验证).
请注意,除非您已声明公共属性,否则您必须使用getter/setter方法:
{{ app.security.getToken().getUser().getUsername() }}
Run Code Online (Sandbox Code Playgroud)
作为快捷方式,您可以使用set标记在模板中定义用户变量:
{% set user = app.security.getToken().getUser() %}
Run Code Online (Sandbox Code Playgroud)
并节省大量的打字,或从控制器传递.
Reu*_*ven 20
在我们的项目中,我们使用app object.它是Symfony\Bundle\FrameworkBundle\Templating\GlobalVariables
此对象具有getUser在安全上下文中访问用户的方法.
所以在你的代码中你可以使用
{{ app.user.username }}
Run Code Online (Sandbox Code Playgroud)
在您的视图中检索用户.
小智 14
只需注意,Twig有一个功能,您可以在其中检查用户是否具有来自视图层的给定角色:
{% if is_granted('ROLE_USER') %}
<a href="...">Delete</a>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28220 次 |
| 最近记录: |