Я начал использовать Symfony2 Framework, который выглядит очень хорошо для меня.
После создания первых пакетов для перестройки существующего проекта с Symfony2 я пришел к этой проблеме:
Я создал {% block navigation %}
в base.html.twig, где находится моя навигация
Затем в моем пакете я расширяю base.html.twig, и навигация становится видимой.
Все в порядке.
Моя проблема в том, что я хочу показать приветствие зарегистрированным пользователям, но base.html.twig не имеет логики или контейнера, и мне интересно, как я могу «протолкнуть» информацию о пользователе, чтобы мне не нужно было определять информацию о пользователе в контроллере каждого пакета.
На данный момент мое действие контроллера выглядит так:
public function indexAction()
{
$sUser = $this->getUser();
return $this->render('@WhatEver/index.html.twig', array(
'sUser' => $sUser
));
}
Итак, мой вопрос: Как я могу управлять своим проектом, чтобы информация о пользователях в навигации существовала из каждого пакета?
Является ли расширение Twig правильным способом?
Или мне нужно изменить способ включения шаблонов?
Спасибо всем, кто может помочь мне с этим!
Доступ к стандартному пользователю Symfony можно получить напрямую через Twig;
{{ app.user.username }}
Вы можете установить имя пользователя в сеансе
Тогда вы могли бы позвонить с {{ session.username }}
Другая возможность будет FOS:UserBundle
, Если пользователь вошел в систему, вы можете показать его с {{ app.user.name }}
,
Третий вариант — расширение Twig.