我不能为我的生活弄清楚如何在Twig循环中添加</tr><tr>
每个OTHER迭代。
例如:
$numArray = array(12,13,14,15,16,17,18);
传到树枝上,我会像桌子一样循环:
<table>
{% for num in numArray %}
<tr>
<td>
{{num}}
</td>
</tr>
{% endfor %}
</table>
这将输出:
+-----------+
| 12 |
+-----------+
| 13 |
+-----------+
| 14 |
+-----------+
| 15 |
+-----------+
| 16 |
+-----------+
| 17 |
+-----------+
| 18 |
+-----------+
我想做的是得到这样的东西:
+-----------+-----------+
| 12 | 13 |
+-----------+-----------+
| 14 | 15 |
+-----------+-----------+
| 16 | 17 |
+-----------+-----------+
| 18 | |
+-----------+-----------+
但我不能为我的生活找到一种方法来交替我的行输入与任何看似不hacky的东西。老实说,我甚至无法上班。有这个方法吗?或者,我应该编写自己的扩展名吗?
答案 0 :(得分:32)
正确的方法是使用批次过滤器。它是1.12.3中的新功能。
<table>
{% for row in numArray|batch(2) %}
<tr>
{% for column in row %}
<td>{{ column }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
答案 1 :(得分:5)
这样的事情会起作用:
<table>
<tr>
{% for num in numArray %}
<td>
{{num}}
</td>
{% if loop.index is even %}
</tr>
<tr>
{% endif %}
{% endfor %}
{% if num|length is odd %}
<td></td>
{% endif %}
</tr>
</table>
另一种方式,感觉更少hacky:
<table>
{% for i in range(0, numArray|length-1, 2) %}
<tr>
<td>{{ numArray[i] }}</td>
<td>{{ numArray[i+1]|default("") }}</td>
</tr>
{% endfor %}
</table>
答案 2 :(得分:0)
对于这种特殊情况,您可以先准备好阵列。所以在循环中,每行会有两个变量。尝试从此网站http://twig.sensiolabs.org/doc/templates.html
中获取第一个示例