Globalmente acesso ao objeto do usuário em modelos
Pergunta
Eu vi até agora um método Twig para saber o privilégio do usuário
{% if is_granted('ROLE_USER') %}
mas nada sobre obter informações autenticadas do usuário, sem passar o objeto em todas as ações do controlador.
Antes de procurar como passar uma variável global para o meu layout, prefiro saber se existe alguma maneira "padrão" de acessar os objetos de usuário do meu provedor de segurança (pelo menos o nome de usuário e as informações do banco de dados para usuários de entidades) emmeu layout ou em qualquer modelo coberto por um firewall.
Solução
Experimente {{ app.user }}
.
A variável de modelo app
fornece acesso a muitas das variáveis globais que você esperaria, como request
, session
, security
, etc. Verifique o código-fonte para mais informações.
Uma coisa que você deve estar ciente é que, embora a classe GlobalVariables
forneça getters para todas as variáveis, o Twig é inteligente o suficiente para saber como lidar com a forma abreviada, de modo que {{ app.user }}
seja equivalente a {{ app.getUser() }}