如何在树枝模板文件中定义全局变量?

Ami*_*ian 11 php variables global templating twig

是否可以在twig文件中设置全局变量,以便我可以从其他文件,宏和块访问这些变量.

例如,我想拥有variables.twig文件并在其中设置我的变量,然后我可以将其包含在其他模板中.

我知道可以从框架(例如Symfony)设置全局变量,但我想要一个仅使用twig功能的解决方案.

Ala*_*blo 26

使用Symfony2配置

如果您使用的是Symfony2,则可以在config.yml文件中设置全局变量:

# app/config/config.yml
twig:
    # ...
    globals:
        myStuff: %someParam%
Run Code Online (Sandbox Code Playgroud)

然后{{ myStuff }}在应用程序的任何位置使用.


使用Twig_Environment :: addGlobal

如果您在另一个项目中使用Twig,则可以直接在环境中设置全局变量:

$twig = new Twig_Environment($loader);
$twig->addGlobal('myStuff', $someVariable);
Run Code Online (Sandbox Code Playgroud)

然后{{ myStuff }}在应用程序的任何位置使用.


使用Twig扩展名

如果您有许多全局变量并且只想为应用程序的特定部分指定一组全局变量,则可以创建一个Twig扩展:

class Some_Twig_Extension extends Twig_Extension implements Twig_Extension_GlobalsInterface
{
    public function getGlobals()
    {
        return array(
            'someStuff' => $this->myVar,
            // ...
        );
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

然后仅在需要时在您的环境中导入它:

$twig = new Twig_Environment($loader);
$twig->addExtension(new Project_Twig_Extension());
Run Code Online (Sandbox Code Playgroud)

并且仍然{{ myStuff }}可以在您的应用程序中的任

使用Twig模板

当你包含一段Twig代码时,你只包括来自该代码的渲染视图,而不是代码本身.因此,根据设计,不可能按照您要查找的方式包含一组变量.