【问题标题】:How to pass a php variable to twig template如何将 php 变量传递给树枝模板
【发布时间】:2016-05-11 17:24:06
【问题描述】:

我已经找到了很多关于此的讨论,但我似乎无法让它发挥作用。我用这种方式在php中定义变量

$theme_name = 'layout1';

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

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

那么我哪里错了?

【问题讨论】:

  • 模板文件的调用(代码)在哪里?
  • 我的 cms 模板 {{ theme.name }} 中有这个,但没有显示此代码在哪里。

标签: php twig templating


【解决方案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) }}

【讨论】:

    【解决方案2】:

    就这么简单:

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

    然后在你的模板文件中调用

    {{themename}}
    

    【讨论】:

    • 谢谢。我试图理解这个命令。它是否定义了一个名为“themename”的全局 twig 变量,其中包含先前定义的名为 $variation 的 php 变量的内容?在 sensiolabs 网站上很难找到这个的定义,尽管对于程序员来说这可能是显而易见的。
    【解决方案3】:

    您也可以将整个数组添加到 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      • 2019-02-05
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 2013-08-08
      相关资源
      最近更新 更多