Foreach循环与Twig模板引擎中的多个元素

时间:2015-03-11 09:09:21

标签: php twig template-engine

我正在使用Twig作为我的PHP Web应用程序的模板框架。

我想知道是否有一种快速的方法可以在foreach块中获得许多元素。

这是我的数据:

users=>[
 ["name"=>"User1"],
 ["name"=>"User2"],
 ["name"=>"User3"],
 ["name"=>"User4"],
 ["name"=>"User5"],
 ["name"=>"User6"]
]

这将是一个标准循环(每个项目):

<ul>
    {% for user in users %}
        <li>{{ user.name }}</li>
    {% endfor %}
</ul>

但这是我需要的 n 元素块(在本例中 n = 3

<ul>
    <li>User1</li>
    <li>User2</li>
    <li>User3</li>
</ul>
<ul>
    <li>User4</li>
    <li>User5</li>
    <li>User6</li>
</ul>

在Twig中存在一种快速的方法,或者我应该用另一个子阵列层以不同的方式准备数据?

1 个答案:

答案 0 :(得分:12)

您似乎需要使用batch过滤器:

{% set items = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] %}

<table>
{% for row in items|batch(3, 'No item') %}
    <tr>
        {% for column in row %}
            <td>{{ column }}</td>
        {% endfor %}
    </tr>
{% endfor %}
</table>

它将呈现:

<table>
    <tr>
        <td>a</td>
        <td>b</td>
        <td>c</td>
    </tr>
    <tr>
        <td>d</td>
        <td>e</td>
        <td>f</td>
    </tr>
    <tr>
        <td>g</td>
        <td>No item</td>
        <td>No item</td>
    </tr>
</table>

来源:Twig Documentation