在Twig中使用数组的子部分,就好像它们是主要部分一样

时间:2017-07-11 14:46:54

标签: php twig

如果我有一个像这样传递给twig的数组

$values = [
  'title'=>'Title of Page',
  'subsection_a'=>[
                   'title'=>'Title of Subsection'
                  ],
];

我想要做的是针对模板中的特定部分,使用'subsection_a'作为基础,所以当我{{ title }}时,它会显示“分段标题”而不是“页面标题”< / p>

我对Twig非常不熟悉,而且我正在测试它作为模板引擎的替代品,我将它放在一起进行项目。

2 个答案:

答案 0 :(得分:3)

如果您在子模板中划分模板的主要比例,则可以使用关键字with执行此操作:

Controller.php这样

echo $twig->render('main.twig, [
    'title' => 'parent',
    'foo'   => 'bar',
    'bar'   => 'foo',
    'child' => [
        'title' => 'Child',
        'foo'   => 'Foobar',
    ]
]); 

main.twig

<h1>{{ title }}</h1>
<p>{{ foo }}</p>

{% include "child.twig" with child %}

child.twig

<h2>{{ title }}</h2>
<p>{{ foo }}</p>

twigfiddle

答案 1 :(得分:1)

没有Twig方式实现这一目标。 如果它只是为了易于使用,您可以设置一个短变量,例如

{% set sub = subsection_a %}

这样你就可以写{{sub.title}}。

您可以使用twig创建一个新数组,合并特定的子部分,但在您的情况下,它会使管理代码变得更加困难,您可能会重复并且可能不值得这么麻烦。