我不能为我的生活弄清楚如何</tr><tr>
在Twig循环中添加每个OTHER迭代.
例如:
$numArray = array(12,13,14,15,16,17,18);
Run Code Online (Sandbox Code Playgroud)
通过树枝,我会循环一个表,如:
<table>
{% for num in numArray %}
<tr>
<td>
{{num}}
</td>
</tr>
{% endfor %}
</table>
Run Code Online (Sandbox Code Playgroud)
这将输出:
+-----------+
| 12 |
+-----------+
| 13 |
+-----------+
| 14 |
+-----------+
| 15 |
+-----------+
| 16 |
+-----------+
| 17 |
+-----------+
| 18 |
+-----------+
Run Code Online (Sandbox Code Playgroud)
我想做的是得到这样的东西:
+-----------+-----------+
| 12 | 13 |
+-----------+-----------+
| 14 | 15 |
+-----------+-----------+
| 16 | 17 |
+-----------+-----------+
| 18 | |
+-----------+-----------+
Run Code Online (Sandbox Code Playgroud)
但我不能为我的生活找到一种方法来交替我的行输入与任何看似不hacky的东西.老实说,我甚至无法上班.有这个方法吗?或者,我应该编写自己的扩展名吗?
Tob*_*olm 33
正确的方法是使用批量过滤器.它是1.12.3中的新功能.
<table>
{% for row in numArray|batch(2) %}
<tr>
{% for column in row %}
<td>{{ column }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
Run Code Online (Sandbox Code Playgroud)
参考:http://twig.sensiolabs.org/doc/filters/batch.html
像这样的东西会起作用:
<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>
Run Code Online (Sandbox Code Playgroud)
另一种方式,感觉更少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>
Run Code Online (Sandbox Code Playgroud)