twig循环只输出一个td

时间:2014-11-12 14:48:36

标签: html twig

我有以下twig循环,它会生成一些数据:

    {% for reservationDate, rooms in data.pricingTable %}
        <tr>

            <td>
                {% for room in rooms  %}

                    <tr>
                        <td class="date"><p>{{ reservationDate }}</p></td>
                        <td class="roomType">
                            <p>
                                {{ room.description }} ({{ room.bathroomDescription }} {{ 'ROOMDETAILSBATHROOM'|trans }})
                            </p>
                        </td>
                        <td class="people">
                            <p>
                                {{ room.noPeople }}
                            </p>
                        </td>
                        <td class="pricePerPerson">
                            <p>
                                {{ room.pricePerPerson }}<span>{{ room.currency }}</span>
                            </p>
                        </td>
                        <td class="total">
                            <p>
                                {{ room.total }}<span>{{ room.currency }}</span>
                            </p>
                        </td>
                    </tr>
                {% endfor %}
            </td>
        </tr>
    {% endfor %}

通过这样做:

<td class="date"><p>{{ reservationDate }}</p></td>

基于多少次重复多次:

{{ room.description }} ({{ room.bathroomDescription }} {{ 'ROOMDETAILSBATHROOM'|trans }})

将会生成。

我曾尝试使用&#34; rowspan&#34;但暗示使用动态值插入,所以JS解决方案我并不是真的想要。

有没有办法只有一个:

<td class="date"><p>{{ reservationDate }}</p></td> 

无论多少:

{{ room.description }} ({{ room.bathroomDescription }} {{ 'ROOMDETAILSBATHROOM'|trans }})

这似乎有效,但它为每组结果产生一个空行:

                {% for room in rooms  %}

                    <tr>
                        <td class="date">
                        {% if loop.first %} 
                            <p>{{ reservationDate }}</p>
                        {% endif %}
                        </td>
                        <td class="roomType">
                            <p>
                                {{ room.description }} ({{ room.bathroomDescription }} {{ 'ROOMDETAILSBATHROOM'|trans }})
                            </p>
                        </td>
                        <td class="people">
                            <p>
                                {{ room.noPeople }}
                            </p>
                        </td>
                        <td class="pricePerPerson">
                            <p>
                                {{ room.pricePerPerson }}<span>{{ room.currency }}</span>
                            </p>
                        </td>
                        <td class="total">
                            <p>
                                {{ room.total }}<span>{{ room.currency }}</span>
                            </p>
                        </td>
                    </tr>
                {% endfor %}

是从循环中产生的吗?

谢谢

2 个答案:

答案 0 :(得分:4)

你可以使用你会发现here的循环变量来创建这样的东西:

{% for room in rooms  %}

    ...

    {% if loop.first %} 
        <td class="date"><p>{{ reservationDate }}</p></td>
    {% endif %}

    ...

{% endfor %}

使用loop.length,您甚至可以使用变量作为rowspan

答案 1 :(得分:0)

您可以在这段代码中使用jquery:

 $('.date').not(':last').remove();

这将自动删除所有重复项

喜欢这个jsfiddle: http://jsfiddle.net/eyrexwb6/