2014-10-24 7 views
3

Я использую symfony, и я хочу ввести переменную, взятую из базы данных. До сих пор я не вводить переменные, как показано ниже:Inject twig variable symfony2

twig: 
    globals: 
     key: value 

Я думаю, чтобы создать слушателя и внедрить его слушателем, может быть не так ли?

+4

Мне действительно не нравятся люди, которые голосуют только потому, что они не понимают вопроса. – Cerad

ответ

3

Да, вы можете использовать прослушиватель для автоматического добавления динамических переменных во все шаблоны ветви. Это именно то, что делают фреймворки для инъекции объекта приложения.

В этом примере объект проекта запрашивается и затем становится доступным для всех шаблонов ветви.

class ProjectEventListener extends ContainerAware implements EventSubscriberInterface 
{ 
    public function onControllerProject(FilterControllerEvent $event) 
    { 
     .... 
     // Query the project 
     $project = $this->getProjectRepository()->findOneBySlug($projectSlug); 

     // Twig global 
     $twig = $this->container->get('twig'); 
     $twig->addGlobal('project',$project); 
    }