如何在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 %}
答案 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 中使用buttons
或data.buttons
。
进一步阅读
注意:在&#34; embed
&#34;的Twig手册中,我找不到对自动生成的变量this
的任何引用。您当然可以使用{this: data.buttons}
嵌入模板并自行创建。我不建议使用这个变量名,因为它可能会与PHP $this
混淆,而另一方面却无法重新分配。
另一个注释:在循环中输出一个名为buttonText
的变量,该变量未在您的示例中定义。您可能需要根据button
持有的内容将其更改为button.text
或data-buttons
。