Как определить глобальную переменную для Twig
Я использую файл, служащий макетом формы для перезаписи определенных элементов (form_start, функцией form_row, etc.). Я регистрирую его как:
twig:
- AcmeMainBundle:Form:formlayout.html.twig
есть ли способ использовать в нем мои переменные, предоставленные вместе с форма?
например, когда я отправляю в .формат html.прутик!--10-->
array ('form' => $formView, 'var' => $var);
Var определяется только в .формат html.прутик!--10-->.
Как сделать var определено в formlayout в.формат html.прутик!--10-->
3 ответов
можно использовать addGlobal()
метод.
например, в BaseController я использую:
$this->get('twig')->addGlobal('is_test', $isTest);
Так что в вашем случае вы должны, вероятно, сделать:
$this->get('twig')->addGlobal('var', $var);
Если вы не используете symphony, но используете twig самостоятельно, это так же просто, как:
<?php
$loader = new \Twig_Loader_Filesystem('path/to/templates');
$twig = new \Twig_Environment($loader);
$twig->addGlobal('key1', 'var1');
$twig->addGlobal('key2', 'var2');
чтобы установить глобальную переменную в Twig, я создал вызов службы "@get_available_languages " (возвращает массив), а затем на моем ядре.класс событий запроса I реализовал следующее:
class LocaleListener implements EventSubscriberInterface
{
private $defaultLocale;
public function __construct($defaultLocale = 'en', ContainerInterface $container)
{
$this->defaultLocale = $defaultLocale;
$this->container = $container;
}
public function onKernelRequest(GetResponseEvent $event)
{
//Add twig global variables
$this->addTwigGlobals();
}
public function addTwigGlobals(){
//Add avaialble language to twig template as a global variable
$this->container->get('twig')->addGlobal('available_languages', $this->container->get('get_available_languages'));
}
public static function getSubscribedEvents()
{
return array(
// must be registered before the default Locale listener
KernelEvents::REQUEST => array(array('onKernelRequest', 17)),
);
}
}
надеюсь, что это поможет
мир