如何使用symfony2在细枝中设置全局变量

如何使用symfony2在细枝中设置全局变量,symfony,Symfony,我正在使用symfony 2.8和twig 1.2,我想知道是否有办法为twig模板设置全局变量,我不想进入每个twig文件并更改值,如果有一个中心位置,我可以设置变量值并在任何细枝文件中使用它,而不管它们在哪个目录中,那将是非常棒的 现在我正在parameters.yml文件中定义键值 parameters: client_name: 'naruto uzumaki' 然后在控制器里面我有 <?php use Symfony\Bundle\FrameworkBundle\Con

我正在使用symfony 2.8和twig 1.2,我想知道是否有办法为twig模板设置全局变量,我不想进入每个twig文件并更改值,如果有一个中心位置,我可以设置变量值并在任何细枝文件中使用它,而不管它们在哪个目录中,那将是非常棒的

现在我正在
parameters.yml
文件中定义键值

parameters:
    client_name: 'naruto uzumaki'
然后在控制器里面我有

<?php
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class MyController extends Controller
{
    public function editAction()
    {
        $var = $this->container->getParameter('client_name');
        return $this->render("UserBundle:edit:edit.html.twig", array('var' => $var));
    }
}

是的,您可以在配置文件中:

# app/config/config.yml
twig:
    globals:
        my_global_variable: '%client_name%'
然后在细枝上:

{{ my_global_variable }}
不要害怕在google中搜索解决方案,“twig全局变量”的第一个结果是:


在config.yml中尝试以下操作:

twig:
    # ...
    globals:
        global_var: %client_name%'
在您的小树枝中,您可以轻松访问它:

<p>{{ global_var }}</p>
{{global\u var}


您还可以尝试引用服务。请参阅文档

为单独使用Twig的情况添加答案(即当项目的其余部分不是基于Symfony构建时)

扩展样本

class CustomTwigExtension extends \Twig_Extension implements \Twig_Extension_GlobalsInterface
{
    private $globals;

    public function __construct(array $globals) {
        $this->globals = $globals;
    }

    public function getGlobals() {
        return $this->globals;
    }
}
配置细枝:

// where twig is created
$loader = new Twig_Loader_Filesystem('/path/to/templates'); // or whatever loader you would use
$globals = ['global_var' => 'whatever'];
$globalsExtension = new CustomTwigExtension($globals);
$twig = new Twig_Environment($loader);
$twig->addExtension($globalsExtension);
在模板中:

<div>{{ global_var }}</div>
{{global_var}
提及

<div>{{ global_var }}</div>