hen*_*ra1 6 user-roles symfony twig
我有一个问题,
如何在Symfony2 Twig中获得用户角色.
我曾四处寻找,但我找不到它.
请帮忙,或线索..
谢谢你.
叶诚万
Iva*_*ele 21
一个更简单的选项可能是测试角色,因为你必须在security.yml中定义它们:
{% if is_granted('ROLE_ADMIN') %}
Administrator
{% elseif is_granted('ROLE_USER') %}
User
{% else %}
Anonymous
{% endif %}
Run Code Online (Sandbox Code Playgroud)
您可以编写一个Twig扩展来完成此任务.
创建一个枝条扩展并将其注册为服务.
在services.yml加
services:
cms.twig.cms_extension:
class: Path\To\RolesTwigExtension.php
tags:
- { name: twig.extension }
arguments: ["@service_container"]
Run Code Online (Sandbox Code Playgroud)在 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();
}
}
Run Code Online (Sandbox Code Playgroud)在你的twig文件中:
<ul>
{% for key, value in app.user|getRoles %}
<li>{{ value.name }}</li>
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)您可以使用访问整个安全令牌app.security.token。也是rolestoken的一个属性。
{{ dump(app.security.token.roles) }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22058 次 |
| 最近记录: |