我想知道如果用户不是当前用户的话,我是怎么知道的.
我将此代码用于当前用户:
{% if is_granted('ROLE_USER') %}
<a href="...">Delete</a>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
但我希望能够与目前尚未登录的用户做同样的事情.谢谢.
编辑: 事实上,我认为没有直接的方法用twig来测试未经过身份验证的用户的角色.所以我直接在twig模板中做了,测试用户是否是admin,然后设置var.(在我的问题中,我正在搜索如何在用户列表中进行.)
{% set from_user_is_admin = false %}
{% for role in from_user.getRoles() %}
{% if role == 'ROLE_ADMIN' %}{% set from_user_admin = true %}{% endif %}
{% if role == 'ROLE_SUPER_ADMIN' %}{% set from_user_admin = true %}{% endif %}
{% endfor %}
{% if from_user_admin == false %}THIS USER IS NOT ADMIN{% endif %}
Run Code Online (Sandbox Code Playgroud)
Web*_*rig 16
我认为如果你在User实体中实现了一个isGranted函数会容易得多:
Class User implements UserInterface {
...
public function isGranted($role)
{
return in_array($role, $this->getRoles());
}
}
Run Code Online (Sandbox Code Playgroud)
您现在可以轻松地在应用程序的每个层中检查授予的角色.在PHP中:
$user->isGranted("USER_ADMIN")
Run Code Online (Sandbox Code Playgroud)
或者在Twig中:
user.granted("USER_ADMIN")
Run Code Online (Sandbox Code Playgroud)
如果您需要检查当前用户的角色,可以在Twig中执行此操作:
app.user.granted("USER_ADMIN")
Run Code Online (Sandbox Code Playgroud)
注意:变量"app"是全局定义的.
注意2:如果您在应用程序的安全区域之外使用此代码,则此代码可能会抛出异常,因为app.user将为NULL.
您可以使用与"not"类似的语句:
{% if not is_granted('ROLE_USER') %}
<a href="...">Delete</a>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
或使用else声明:
{% if is_granted('ROLE_USER') %}
<a href="...">Delete</a>
{% else %}
{# something else for guest user, not logged in #}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30451 次 |
| 最近记录: |