我在Twig数组中嵌套了内容。我有几个月,每个都有几天:
在我的page.twig中:
{% set mock = {
main_title: 'Main title',
months:
[
{
sub_title: 'Title 1',
days: [
{
monday: 'Lorum',
tuesday: 'Ipsum'
}
]
},
{
sub_title: 'Title 2',
days: [
{
monday: 'Dolorem',
tuesday: 'Neque'
}
]
}
]
}
%}
{% include "component.twig" %}
我试图打印每个月的子标题及其下的日期文字:
<h2>Title 1</h2>
<h3>Lorum</h3>
<h3>Ipsum</h3>
<h2>Title 2</h2>
<h3>Dolorem</h3>
<h3>Neque</h3>
在component.twig中:
{% for m in months %}
<h2>{{ m.sub_title }}</h2>
{% for d in months.days %}
<h3>Print test</h3>
{% endfor %}
{% endfor %}
<h2>
中的月份子标题打印正常,但我甚至无法在几个月内正确循环播放。
答案 0 :(得分:1)
看来错误出现在你的第二个循环中。而不是几个月。你需要使用m.days。
您的第一个循环将月份拉入变量m。由于您的主数组月份没有元素天数,但每个月都有,因此您的内部循环当前没有要打印的内容。
正如旁注,如果此模板不使用autoescape,我还建议添加转义。
{% for m in months %}
<h2>{{m.sub_title| e}}</h2>
{% for d in m.days %}
<h3>{{ d| e }}</h3>
{% endfor %}
{% endfor %}
------ -----编辑
我第一次错过了你的样本数组有一个数组&#34;天&#34;在其中使用哈希而不是单个级别。在这种情况下,您实际上拥有days键的等价物(在数组中的数组中为PHP)。
在这种情况下,这应该可以解决问题
{% for m in months %}
<h2>{{m.sub_title| e}}</h2>
{% for d in m.days[0] %}
<h3>{{ d| e }}</h3>
{% endfor %}
{% endfor %}