循环的树枝"这个"

时间:2015-10-22 11:56:34

标签: twig

如何在For-loop中使用传入的数据?

我想做这样的事情: (使用"这"不起作用)

{% for button in this %}
    Button in passed in array        
{% endfor %}

*编辑*

我有一个名为button-group的twig模板,我有一个循环遍历传递到twig-template的所有按钮。但我无法遍历我传入的任何数据。

我的嵌入:

{% if data.buttons %}
  {% embed "button-group.twig" data.buttons %}{% endembed %}
{% endif %} 

按钮-group.twig:

{% for button in this %} {# this should be the same as passed data.buttons #}
  <button>{{buttonText}}</button>
{% endfor %}

1 个答案:

答案 0 :(得分:2)

嵌入文件中提供了所有变量。您可以简单地迭代data.buttons,如:

{# button-group.html.twig #}
{% for button in data.buttons %}
    <button>{{ buttonText }}</button>
{% endfor %}

但是,您可以使用其他名称明确传递变量:

{# skeleton.html.twig #}
{% embed "default/test.html.twig" with {buttons: data.buttons} only %}{% endembed %}

{# button-group.html.twig #}
{% for button in buttons %}
    <button>{{ buttonText }}</button>
{% endfor %}

关键字only表示只有传递的变量才能在嵌入式模板中使用。如果省略,您可以在 button-group.html.twig 中使用buttonsdata.buttons

进一步阅读

注意:在&#34; embed&#34;的Twig手册中,我找不到对自动生成的变量this的任何引用。您当然可以使用{this: data.buttons}嵌入模板并自行创建。我不建议使用这个变量名,因为它可能会与PHP $this混淆,而另一方面却无法重新分配。

另一个注释:在循环中输出一个名为buttonText的变量,该变量未在您的示例中定义。您可能需要根据button持有的内容将其更改为button.textdata-buttons