我想注入(inject)要在 Twig 文件中使用的全局变量。
我知道我可以将它们添加到 config.yml
twig:
variable_1: variable 1
variable_2: variable 2
但在当前设置下,我无法更新 config.yml。
我已经通过 DependencyInjection 内的扩展类中的 load() 注入(inject)了 yml 文件,但这就是我所得到的,因为我不知道如何注入(inject)它以供 Twig 使用。
最佳答案
您可以尝试复制定义的 TwigExtensionLoader 的逻辑 here在compilerPass中,例如:
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 ,例如:
自定义密码
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));
}
}
然后您可以像平常一样在 Twig 模板中使用全局变量:
{{ foo }}
希望这有帮助
关于symfony - 在自定义 twig_variable.yml 中注入(inject)全局 twig 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42224215/