2012-10-16 3 views
0
  • Я создал объект пользователя, который реализует UserInterface. Все хорошо.
  • Я создал две вспомогательные таблицы, управляя ролями и разрешениями (каждая роль имеет некоторые разрешения).

Итак, мои сущности являются:Symfony2: Всегда возвращайте переменную в TWIG

Пользователь -> имеет одну роль (одну роль, и эта роль приходит от --->)

Роль -> только имя роли

разрешение -> только имя разрешения

RolePermission -> создает связь между ролью и разрешениями.

Что мне нужно сделать, так это получить разрешения, которые имеет текущий зарегистрированный пользователь: как это сделать? Глядя в первую очередь на роль пользователя и глядя в RolePermission, какие разрешения имеют.

Это нормально, но как только у меня есть разрешения, мне нужно отправить его на TWIG.

Я могу сделать это вручную, отправив на каждый $this->render приложения массив этих разрешений, но я думаю, что это не лучшее решение (ленивое ...).

Можно ли отправлять эти данные (массив с разрешениями) каждый раз, когда я создаю шаблон TWIG? Как?

EDIT:

Этот вопрос о получении информации, связанной с вошедшего пользователя, но не о том, чтобы проверить роль в веточке (is_granted)

ответ

0

После долгих исследований, и из-за моих потребностей я m окончательно возвращает и массив с разрешениями в каждом ->render

0

В Twig, используйте функцию is_granted(), чтобы проверить, если ток пользователь имеет определенную роль:

{% if is_granted('ROLE_ADMIN') %} 
    {# output stuff for an admin #} 
{% endif %} 

Если вы хотите, чтобы получить роли текущего пользователя, сделать это:

{% for role in app.user.roles %} 
    {# do what you want with the role #} 
{% endif %} 
+0

Как я уже сказал, мне это не нужно. Я уже знаю, как получить проверку роли в twig ... – Bernat

+0

Что вам нужно? Ваш вопрос непонятен. –

+0

Этот вопрос связан с получением информации, связанной с зарегистрированным пользователем (массив с разрешениями, где разрешения - другой объект), но не собирается проверять роль в TWIG (is_granted) – Bernat

1

Предполагая схему базы данных, как это ...

[table User] --ManyToOne--> [table Role] --OneToMany--> [table Permission] 

... вы можете попробовать следующее:

{% for permission in app.user.role.permissions %} 
    {{ permission.name }} 
{% endfor %} 
+0

Похоже на решение. Я проверю, а потом вернусь, чтобы одобрить его :) – Bernat

Смежные вопросы