8

我有包含城市的数组,我想将它们放在 3 列列表中。如何渲染一组城市,将它们平均分成 3 列列表?

我的html列表:

                    <div class="col-md-4">  
                        <ul>
                            <li class="city-item"><a href="#">City</a></li>
                            <li class="city-item"><a href="#">City</a></li>
                            <li class="city-item"><a href="#">City</a></li>
                            <li class="city-item"><a href="#">City</a></li>
                            ...
                        </ul>
                    </div>
                    <div class="col-md-4">  
                        <ul>
                            <li class="city-item"><a href="#">City</a></li>
                            <li class="city-item"><a href="#">City</a></li>
                            <li class="city-item"><a href="#">City</a></li>
                            <li class="city-item"><a href="#">City</a></li>
                            ...
                        </ul>
                    </div>
                    <div class="col-md-4">  
                        <ul>
                            <li class="city-item"><a href="#">City</a></li>
                            <li class="city-item"><a href="#">City</a></li>
                            <li class="city-item"><a href="#">City</a></li>
                            <li class="city-item"><a href="#">City</a></li>
                            <li class="city-item"><a href="#">City</a></li>
                            ...
                        </ul>
                    </div>

我希望数据按此顺序出现

city0   city3   city6
city1   city4   city7
city2   city5

渲染数据的最佳方法是什么?

4

1 回答 1

14

更新 1:我创建了一个 Twig Fiddle 以在评论中加入建议。 http://twigfiddle.com/0h54xy

更新 2:如果您有较新版本的 Twig,最好使用batch过滤器。有关示例,请参见http://twigfiddle.com/0h54xy/5 。


这是模运算符%非常有用的地方。

//Twig 中的算子将一个数除以取数,即20 // 3 == 2

请注意,Twigloop.index不是零索引的,第一个值为 1。

{% if cities|length  %}
    {% set citiesPerColumn = (cities|length / 3)|round(0, 'ceil') %}

    {% for city in cities %}

        {% if citiesPerColumn == 1 or loop.index % citiesPerColumn == 1 %}
            <div class="col-md-4">
                <ul>
        {% endif %}

                    <li class="city-item"><a href="#">{{ city }}</a></li>

        {% if loop.last or loop.index % citiesPerColumn == 0 %}
                </ul>
            </div>
        {% endif %}

    {% endfor %}
{% endif %}
于 2013-11-08T23:29:42.260 回答