如何将php变量传递给twig模板

时间:2016-02-02 18:41:46

标签: php twig templating

我已经就此发现了不少讨论,但我似乎无法使其发挥作用。我以这种方式在php中定义变量

$theme_name = 'layout1';

所以我尝试了以下方法,让'layout1'在我的CMS模板中使用{{theme.name}}显示以下每一个,一次一个,但没有一个工作。带有$ twig的那个给了未定义的变量'twig'。

$theme['name'] = $theme_name;
$app["twig"]->addGlobal("name", $theme_name);
$GLOBALS['theme'] = 'layout1';
$twig->addGlobal('themename', 'layout1');

那我哪里错了?

3 个答案:

答案 0 :(得分:1)

Twig文档涵盖了这一点。

  

https://twig.symfony.com/doc/2.x/advanced.html

     

https://twig.symfony.com/doc/2.x/advanced.html#globals

全局变量与任何其他模板变量一样,除了它在所有模板和宏中都可用:

 $twig = new Twig_Environment($loader);
 $twig->addGlobal('text', new Text());

然后,您可以在模板中的任何位置使用文本变量:1

 {{ text.lipsum(40) }}

答案 1 :(得分:1)

您还可以将整个数组添加到Twig:

$theme_name = 'layout1';
$somevar = 'blah';

$theme = array(
    'name' => $theme_name,
    'something' => $somevar
);

$twig = new Twig_Environment($loader);
$app["twig"]->addGlobal("theme", $theme);

在模板中,您可以输出此数组的命名元素:

{{ theme.name }}
{{ theme.something }}

HTH

答案 2 :(得分:0)

简单:

$twig->addGlobal('themename', $variation);

在您的模板文件中,您只需致电

{{themename}}