在Twig条件下拆分HTML

时间:2014-05-11 14:27:58

标签: html symfony twig

我想在for循环中执行此操作

{% if count % 2 == 0 %}
    <div class="col-md-6"><!--start block-->
        <div class="item-small gutter-bottom">
            <img src="{{ item.image_url }}"/>
            <div class="item-title">{{ item.name }}</div>
        </div>
{% else %}
        <div class="item-small gutter-bottom">
            <img src="{{ item.image_url }}"/>
            <div class="course-title">{{ item.name }}</div>
        </div>
    </div><!--end block-->
{% endif %}

我把每两个项目包含一个额外的div。但是,当以HTML格式呈现时,结束标记完全错误,输出不愉快。

2 个答案:

答案 0 :(得分:2)

您应该使用twig的 batch 方法。

{% for row in items|batch(2) %}

    <div class="col-md-6"><!--start block-->

        {% for item in row %}

            <div class="item-small gutter-bottom">
                <img src="{{ item.image_url }}"/>
                <div class="item-title">{{ item.name }}</div>
            </div>

        {% endfor %}

    </div><!--end block-->

{% endfor %}

答案 1 :(得分:1)

我是这样做的(我为循环设置了一个自己的例子):

{% for i in 0..9 %}
    {% if loop.index0 % 2 == 0 %}
    <div class="col-md-6"><!--start block-->
        <div class="item-small gutter-bottom">
            <img src="{{ item.image_url }}"/>
            <div class="item-title">{{ item.name }}</div>
        </div>
    {% else %}
        <div class="item-small gutter-bottom">
            <img src="{{ item.image_url }}"/>
            <div class="course-title">{{ item.name }}</div>
        </div>
    </div><!--end block-->
    {% endif %}
{% endfor %}

你需要注意循环的索引,因为如果&#39;如果&#39;代码不会先渲染,渲染的html也不会很好,如果在最后一次迭代中,则会出现相同的情况。“否则&#39;代码未呈现。