У меня есть один вопрос,
Как я могу получить роль пользователя в Symfony2 Twig.
Я искал вокруг, но я не мог найти его.
Помогите пожалуйста или подскажите..
Спасибо раньше.
Хендраван
У меня есть один вопрос,
Как я могу получить роль пользователя в Symfony2 Twig.
Я искал вокруг, но я не мог найти его.
Помогите пожалуйста или подскажите..
Спасибо раньше.
Хендраван
Более простым вариантом может быть проверка роли, поскольку вы должны определить ее в security.yml:
{% if is_granted('ROLE_ADMIN') %}
Administrator
{% elseif is_granted('ROLE_USER') %}
User
{% else %}
Anonymous
{% endif %}
Для этого вы можете написать расширение Twig.
Создайте расширение ветки и зарегистрируйте его как службу.
в services.yml
добавить
services:
cms.twig.cms_extension:
class: Path\To\RolesTwigExtension.php
tags:
- { name: twig.extension }
arguments: ["@service_container"]
In 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();
}
}
В вашем файле ветки:
<ul>
{% for key, value in app.user|getRoles %}
<li>{{ value.name }}</li>
{% endfor %}
</ul>
Силекс:
{{ 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 %}
Вы можете получить доступ ко всему токену безопасности, используя app.security.token
. Также roles
является атрибутом токена.
{{ dump(app.security.token.roles) }}