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

标签 symfony twig

我想注入(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/

相关文章:

sql - 名为 "order"的字段的 Doctrine 语法错误

php - Slim Framework -> 创建 XML 输出

javascript - 如何在ajax请求中与formData一起发送附加数据

php - 在 Twig 文件之间导入内容

php - Symfony2 fos 在一个 View 中登录、注册和忘记密码

javascript - Ajax with twig,它是如何工作的?

php - 你如何在 symfony2 的表单类中隐藏标签?

php - 在 Symfony 的控制台命令中使用事件监听器

php - Symfony2 - 如何验证自动完成实体表单类型?

symfony - 在 symfony2 中使用表单构建器单击按钮/链接时添加/删除动态文本字段