gpt4 book ai didi

symfony - 在自定义 twig_variable.yml 中注入(inject)全局 twig 变量

转载 作者:行者123 更新时间:2023-12-02 17:52:47 24 4
gpt4 key购买 nike

我想注入(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));
}
}

See the docs here about如何注册。

然后您可以像平常一样在 Twig 模板中使用全局变量:

{{ foo }}

希望这有帮助

关于symfony - 在自定义 twig_variable.yml 中注入(inject)全局 twig 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42224215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com