有条件的树枝批次

时间:2016-06-21 12:38:24

标签: symfony twig

我将卡片(一些数据)从控制器发送到树枝,然后用3个元素创建行。

{% for elem in Cards|batch(3) %}
    <div>
        <div class="row">
        {% include ':appviews/elements/Card:Card.html.twig' with {'elem': elem} %}
        </div>
    </div>
{% endfor %}

它运作良好,但现在我需要添加静态html卡(不是来自Data),必须渲染一次。 有没有办法,在第一个循环中只添加2个elems?

{% for elem in Cards|batch(3) %}
     <div>
         <div class="row">
             {% if loop.first %}
                <div class="col-md-4 noPadding margin">
                    <div class="square"> SOME TEXT</div>
                </div>
             {% endif %}
             {% include ':appviews/elements/Card:Card.html.twig' with {'elem': elem} %}
         </div>
     </div>
{% endfor %}

2 个答案:

答案 0 :(得分:1)

使用“批量”过滤器无法执行此操作。我建议你使用一些逻辑技巧。可能有很多,取决于:

  • 您多久要插入一个硬编码块
  • 正在重复使用多少代码/模板

例如,如果您在开始时只需要一次,则可以将数组切片一次,然后再将其切片:

{% for elem in Cards|slice(0, 1) %}
    <div>
        <div class="row">
            {% if loop.first %}
                <div class="col-md-4 noPadding margin">
                    <div class="square"> SOME TEXT</div>
                </div>
            {% endif %}
            {% include ':appviews/elements/Card:Card.html.twig' with {'elem': elem} %}
        </div>
    </div>
{% endfor %}

{% for elem in Cards|slice(2, Cards|length) %}
    ...
{% endfor %}

如果您认为复制/粘贴过多,您可以为“行”创建一个宏,其中包含一些参数并包含所有逻辑。然后你可以控制,如何,何时和什么呈现。但在简单的情况下这可能是一个过载,所以你决定:

Offset

答案 1 :(得分:0)

嗯,最终的代码是:

<div class="row rowQuest">
    <div class="col-md-4 noPadding margin">
        <div class="square">HARDCODED CARD</div>
    </div>
    {% set firstPartOfQuests = quests|slice(0,2) %}
    {% for elem in firstPartOfQuests|batch(2) %}
        {% include 'appviews/elements/questCard/questCard.html.twig' with {'elem': elem} %}
    {% endfor %}
</div>
{% set lastPartOfQuests = quests|slice(2,quests|length) %}
{% for elem in lastPartOfQuests|batch(3) %}
    <div class="row rowQuest">
{% include ':appviews/elements/questCard:questCard.html.twig' with {'elem': elem} %}
     </div>
{% endfor %}

PS我仍然不明白为什么我不能在没有批次的情况下使用循环。

{% for elem in first2Quests %}
    {% include 'appviews/elements/questCard/questCard.html.twig' with     {'elem': elem} %}
{% endfor %}
相关问题