我正在使用一个文件作为表单布局来覆盖某些元素(form_start,form_row等).我注册如下:
twig:
- AcmeMainBundle:Form:formlayout.html.twig
Run Code Online (Sandbox Code Playgroud)
有没有办法在其中使用我提供的变量以及表单?
例如,当我发送到index.html.twig时
array ('form' => $formView, 'var' => $var);
Run Code Online (Sandbox Code Playgroud)
Var仅在index.html.twig中定义.
那么如何在formlayout.html.twig中定义var
Mar*_*łek 26
你可以使用addGlobal()方法.
例如在BaseController中我使用:
$this->get('twig')->addGlobal('is_test', $isTest);
Run Code Online (Sandbox Code Playgroud)
所以在你的情况下你应该这样做:
$this->get('twig')->addGlobal('var', $var);
Run Code Online (Sandbox Code Playgroud)
如果您不使用交响乐而仅使用树枝,则非常简单:
<?php
$loader = new \Twig_Loader_Filesystem('path/to/templates');
$twig = new \Twig_Environment($loader);
$twig->addGlobal('key1', 'var1');
$twig->addGlobal('key2', 'var2');
Run Code Online (Sandbox Code Playgroud)
小智 5
为了在 Twig 中设置一个全局变量,我创建了一个服务调用“@get_available_languages”(返回一个数组),然后在我的 kernel.request 事件类上我实现了以下内容:
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)),
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22142 次 |
| 最近记录: |