我有一个问题,
如何在Symfony2 Twig中获得用户角色。
我曾四处寻找,但我找不到它。
请帮忙,或提示......
先谢谢。
叶诚万
答案 0 :(得分:21)
一个更简单的选项可能是测试角色,因为你必须在security.yml中定义它们:
{% if is_granted('ROLE_ADMIN') %}
Administrator
{% elseif is_granted('ROLE_USER') %}
User
{% else %}
Anonymous
{% endif %}
答案 1 :(得分:8)
您可以编写一个Twig扩展来完成此任务。
创建一个树枝扩展并将其注册为服务。
在services.yml
添加
services:
cms.twig.cms_extension:
class: Path\To\RolesTwigExtension.php
tags:
- { name: twig.extension }
arguments: ["@service_container"]
在RolesTwigExtension.php
use Symfony\Component\Security\Core\User\UserInterface;
class RolesTwigExtension extends \Twig_Extension {
public function getFilters() {
return array(
new \Twig_SimpleFilter('getRoles', [$this, 'getRoles']),
);
}
public function getName() {
return 'roles_filter_twig_extension';
}
public function getRoles(UserInterface $user) {
return $user->getRoles();
}
}
在您的twig文件中:
<ul>
{% for key, value in app.user|getRoles %}
<li>{{ value.name }}</li>
{% endfor %}
</ul>
答案 2 :(得分:3)
捷希凯:
{{ dump(app.user.roles) }}
array(1) { [0]=> string(9) "ROLE_USER" }
{% if app.user is not null %}
{% for role in app.user.roles if role != 'ROLE_ADMIN' %}
{{ role }} //ROLE_USER
{% endfor %}
{% endif %}
答案 3 :(得分:1)
您可以使用app.security.token
访问整个安全令牌。此外,roles
是令牌的属性。
{{ dump(app.security.token.roles) }}
答案 4 :(得分:0)
您可以扫描用户的收藏角色:
{% for role in app.user.roles %}
{{ role }} <br>
{% endfor %}
&#13;