Я использую FOSuserbundle, чтобы начать регистрацию пользователей https://github.com/FriendsOfSymfony/FOSUserBundle
У меня есть регистрация / вход и выход. Что я хочу сделать сейчас, так это получить данные зарегистрированных пользователей и представить их на каждой странице своего сайта. Как "Привет, имя пользователя" в заголовке типа вещи.
Похоже, что встраивание контроллера в мое приложение / Resources / views / base.html.twig - лучший способ сделать это http://symfony.com/doc/current/book/templating.html#embedding-controllers
Поэтому я написал свой контроллер для доступа к данным профиля пользователя. Я не могу понять, как получить доступ к методам FOS в моем встроенном контроллере. Итак, из моего Acme / UserBundle / Controller / UserController.php я хочу сделать это:
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));
}
который я взял из: vendor / bundles / FOS / UserBundle / Controller / ProfileController.php
источник
app.user.username
все равно работал у меня. Может быть, кому-нибудь будет полезно узнать.Для Symfony 2.6 и выше мы можем использовать
поскольку глобальная переменная app.security для шаблона Twig устарела и будет удалена из версии 3.0
больше информации:
http://symfony.com/blog/new-in-symfony-2-6-security-component-improvements
и увидеть глобальные переменные в
http://symfony.com/doc/current/reference/twig_reference.html
источник
{{ app.user.firstname }}
. Думаю, он более удобен для фронтенд-разработчиков.Просто укажите имя пользователя для входа, например, функция фильтрации по умолчанию ('') должна быть приятной, когда пользователь НЕ входит в систему, просто избегайте раздражающего сообщения об ошибке.
источник