Aby rozpocząć rejestrację użytkownika, używam FOSuserbundle https://github.com/FriendsOfSymfony/FOSUserBundle
Mam to podczas rejestracji / logowania i wylogowywania. Teraz chcę pobrać dane zalogowanych użytkowników i zaprezentować je na każdej stronie mojej witryny. Na przykład „Cześć, nazwa użytkownika” w nagłówku.
Wygląda na to, że osadzenie kontrolera w mojej aplikacji / Resources / views / base.html.twig jest najlepszym sposobem na zrobienie tego http://symfony.com/doc/current/book/templating.html#embedding-controllers
Napisałem więc do mojego kontrolera, aby uzyskać dostęp do danych profilu użytkownika. Nie mogę dowiedzieć się, jak uzyskać dostęp do metod FOS w moim wbudowanym kontrolerze. Więc z mojego Acme / UserBundle / Controller / UserController.php chcę to zrobić:
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));
}
które wziąłem od: vendor / bundles / FOS / UserBundle / Controller / ProfileController.php
źródło
app.user.username
nadal działało dla mnie. Może się to przydać, żeby ktoś wiedział.Dla symfony 2.6 i nowszych możemy użyć
tak jak zmienna globalna app.security dla szablonu Twig została wycofana i zostanie usunięta z wersji 3.0
więcej informacji:
http://symfony.com/blog/new-in-symfony-2-6-security-component-improvements
i zobacz zmienne globalne w
http://symfony.com/doc/current/reference/twig_reference.html
źródło
{{ app.user.firstname }}
. Sądzę, że jest bardziej przyjazny dla programistów.Po prostu podaj nazwę użytkownika logowania, na przykład domyślna funkcja filtru ('') powinna być przyjemna, gdy użytkownik NIE jest zalogowany, po prostu unikaj irytującego komunikatu o błędzie.
źródło