我想注入要在twig文件中使用的全局变量。
我知道我可以将它们添加到config.yml
twig:
variable_1: variable 1
variable_2: variable 2
但是使用当前设置我无法更新config.yml。
我已经通过load()在DependencyInjection内部的扩展类中注入了yml文件,但这是我得到的,因为我不知道如何为Twig使用注入它。
答案 0 :(得分:5)
您可以尝试在compilerPass中复制TwigExtensionLoader的逻辑作为定义的here,例如:
public function process(ContainerBuilder $container)
{
$def = $container->getDefinition('twig');
$def->addMethodCall('addGlobal', array('my-key', 'my-value'));
}
更多详细示例:
假设我们有一个加载的属性如下:
twig_params.yml
parameters:
foo: bar
已经由DependencyInjection加载,我们可以添加compiler pass,例如:
CustomPass
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class CustomPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
$foo = $container->getParameter('foo');
$def = $container->getDefinition('twig');
$def->addMethodCall('addGlobal', array('foo', $foo));
}
}
然后你可以在树枝模板中使用通常的全局变量:
{{ foo }}
希望这个帮助