Estou usando o FOSuserbundle para começar a registrar o usuário https://github.com/FriendsOfSymfony/FOSUserBundle
Eu tenho que registrar / fazer login e logout. O que eu quero fazer agora é pegar os dados dos usuários conectados e apresentá-los em todas as páginas do meu site. Como "Olá, nome de usuário" no tipo de cabeçalho.
Parece que incorporar um controlador em meu app / Resources / views / base.html.twig é a melhor maneira de fazer isso http://symfony.com/doc/current/book/templating.html#embedding-controllers
Então, escrevi meu controlador para acessar os dados do perfil do usuário. O que não consigo descobrir é como acessar os métodos FOS em meu controlador embarcado. Então, em meu Acme / UserBundle / Controller / UserController.php, eu quero fazer isso:
public function showAction()
{
$user = $this->container->get('security.context')->getToken()->getUser();
if (!is_object($user) || !$user instanceof UserInterface) {
throw new AccessDeniedException(
'This user does not have access to this section.');
}
return $this->container->get('templating')
->renderResponse('FOSUserBundle:Profile:show.html.'.$this->container
->getParameter('fos_user.template.engine'), array('user' => $user));
}
que peguei de: vendor / bundles / FOS / UserBundle / Controller / ProfileController.php
fonte
app.user.username
ainda funcionou para mim. Pode ser útil para alguém saber.Para symfony 2.6 e superior, podemos usar
como a variável global app.security para o modelo Twig foi descontinuado e será removido do 3.0
mais informações:
http://symfony.com/blog/new-in-symfony-2-6-security-component-improvements
e ver as variáveis globais em
http://symfony.com/doc/current/reference/twig_reference.html
fonte
{{ app.user.firstname }}
. Acho que é mais amigável com o desenvolvedor.Apenas apresente o nome de usuário de login, por exemplo, a função de filtro padrão ('') deve ser bom quando o usuário NÃO fizer o login, apenas para evitar mensagens de erro irritantes.
fonte