twig突破循环,然后在下一个div中继续休息

时间:2016-09-25 08:28:32

标签: php symfony for-loop twig

我正在尝试遍历会议对象的数组,每个会议在相同的日期需要在其自己的div中显示,如果日期更改,那么日期会议需要在下一个div中,所以我正在寻找的输出是像这样的东西

<div class="row">
    <h2 class="date-heading">September 24</h2>
    <div class="col4">Meeting 1 </div>
    <div class="col4">Meeting 2 </div>
    <div class="col4">Meeting 3 </div>
    <div class="col4">Meeting 4 </div>
    <div class="col4">Meeting 5 </div>
</div>

<div class="row">
    <h2 class="date-heading">September 25</h2>
    <div class="col4">Meeting 1 </div>
    <div class="col4">Meeting 2 </div>
    <div class="col4">Meeting 3 </div>
    <div class="col4">Meeting 4 </div>
    <div class="col4">Meeting 5 </div>
</div>

<div class="row">
    <h2 class="date-heading">September 26</h2>
    <div class="col4">Meeting 1 </div>
    <div class="col4">Meeting 2 </div>
    <div class="col4">Meeting 3 </div>
    <div class="col4">Meeting 4 </div>
    <div class="col4">Meeting 5 </div>
</div>

现在在循环中我可以访问名为request.isNewDate的每个对象的参数,只要当前循环的日期与前一个循环不同,就会设置为yes,我想我可以用它来实现我需要的东西,但我在逻辑上遇到了问题。

这就是我的代码在我循环的地方看起来如何,如果request.isNewDateyes,我怎么能摆脱这个循环,然后在新的div中开始休息。

任何帮助将不胜感激。

<div class="row">
    {% for request in pagination %}
    <div class="col4">

        <h5 class="">{{ request.getGuest.getFirstName }}</h5>
        <h6 class="text-transform-none">{{ request.getGuest.getCollege }}<br>
            {{ request.getGuest.getDegree }}<br>
            ({{ request.getGuest.getCourse }})
        </h6>
    </div>
</div>

2 个答案:

答案 0 :(得分:0)

在控制器中执行逻辑并将数据分别传递给Twig。

你不希望这种逻辑埋在模板中。它将成为未来的维护问题,并且这样做会导致混乱,难以阅读的模板。

答案 1 :(得分:0)

试试这段剪辑代码:

{% for request in pagination %}

    {# 
        If is a new date, open a new div TAG and dump the data.
        If the first element of the collection do not have this info
        consider to use loop.index0 as OR operation.
    #}
    {% if request.isNewDate %}
    <div class="row">
                                  {# print and format the date #}
        <h2 class="date-heading">{{ request.date }}</h2>
    {% endif %}

    {# Render data of an element, consider to wrap this data in a single twig and incude #}
    <div class="col4">

        <h5 class="">{{ request.getGuest.getFirstName }}</h5>
        <h6 class="text-transform-none">{{ request.getGuest.getCollege }}<br>
            {{ request.getGuest.getDegree }}<br>
            ({{ request.getGuest.getCourse }})
        </h6>
    </div>

    {# remember to close the div #}
    {% if request.isNewDate %}
        </div>
    {% endif %}


{% endfor %}

希望这个帮助