Я хочу получить роль пользователя, который в данный момент вошел в систему. Потому что я хочу показать, что в моем навигаторе кто-нибудь может мне помочь?
Мой вопрос о том, как получить текущую роль
Я попробовал сейчас в своей ветке {{app.user.roles}} и больше ничего не использую AuthorizationCheckerInterface.




Если я хорошо помню, вы можете получить роли в twig, выполнив {{ app.user && app.user.roles }}, но вы получите множество ролей.
Надеюсь, поможет.
Спасибо за ваш ответ, но эта ошибка возникла, если я напрямую использую {{app.user.roles}} в своей ветке. Это ошибка: во время рендеринга шаблона возникло исключение ("Примечание: массив в строку преобразование ")
да, потому что это массив, и с ним следует так обращаться. Если вы хотите сбросить все роли, вы можете использовать настраиваемый фильтр, например, join (twig.symfony.com/doc/2.x/filters/join.html) или dump (twig.symfony.com/doc/2.x/functions/dump.html)
также не забудьте проверить, существует ли пользователь перед доступом к app.user.roles, чтобы избежать нежелательных ошибок =)
Но я не хочу отказываться от всех ролей. Я просто хочу показать авторизованную роль.
в Symfony у пользователя есть множество ролей, а не только одна. Если вы УВЕРЕНЫ, что у ваших пользователей всегда будет одна и ОДНА ТОЛЬКО роль, вы можете использовать либо {{ app.user.roles | first }}, либо {{ app.user.roles | last }}.
Возможно, это поможет вам лучше понять меня: if ($ authorizationChecker-> isGranted (новое выражение ('"ROLE_INKOPER" в ролях'))) {return $ this-> redirectToRoute ('homepageInkoper'); } нет возможности показать предоставленную роль?
Это хороший пример, даже если он находится в контроллере, а не в том, что он хочет, но код все равно полезно знать
но можешь ли ты помочь мне получить эту роль?
как я уже сказал, если у вашего пользователя всегда только одна роль, и вы каскадируете свои роли в своем security.yml, вы сможете получить роль своего пользователя, просто выполнив в своей ветке {{ app.user && app.user.roles[0] }}
Большое спасибо, у меня это сработало, но есть ли возможность изменить ROLE_ADMIN в пользовательском интерфейсе, например, на admin?
да, то, что вы должны сделать, это, например, {{ ['ROLE_ADMIN' => 'admin'][app.user.roles[0] }}, на самом деле вы создаете ассоциативный массив и используете его просто в строке =)
Лучше: вы можете определить свой собственный фильтр веток и сделать, например, {{ app.user.roles[0] | roleDisplayer }}, проверьте symfony.com/doc/current/templating/twig_extension.html для получения дополнительной информации =)
У меня ошибка: Незакрытый "[". Я не знаю, как это исправить, в твоем массиве последний
Забыл один ], это {{ ['ROLE_ADMIN' => 'admin'][app.user.roles[0]] }}
вы можете получить от текущего пользователя, когда мы получаем роль, он возвращает массив ролей
$user = $this->getUser();
$role = $user->getRoles();
в ветке
{{app.user.roles}}
Я просто хочу вернуть предоставленную мне роль в своей веточке.
что ты пробовал? Также есть в документации ...