Symfony2 Twig更改子循环限制(批量过滤器)

时间:2015-06-30 09:15:48

标签: php symfony for-loop twig

首先; http://twig.sensiolabs.org/doc/filters/batch.html

我的问题是,我想基于循环索引显示x图像。

如果批处理循环是奇数,则显示2个图像(在子循环中循环两次),否则仅显示1个图像。 (在子循环中循环一次)。

这是我的代码,但它无效。

有什么想法吗?

{% set batch_value = 2 %}
{% for row in getImages(gallery, 'Galeri', 'Detay')|slice(0, 5)|batch(batch_value) %}
    <div class="gallery-column {% if loop.index is odd %}gallery-thumbs{% else %}gallery-original{% endif %}">
        {% for image in row|slice(0, loop.index is odd ? 2 : 1) %}
            <div class="image-item">
                <a class="fancybox" rel="gallery" href="{{ asset(image.image) }}">
                    <figure>
                        <img src="{{ asset(image.image) }}">
                    </figure>
                    <div class="text-wrapper">
                        <div class="align-content">
                            <div class="text-content">
                                <i class="fa fa-2x fa-search"></i>
                            </div>
                        </div>
                    </div>
                </a>
                {{ batch_value }}
            </div>
        {% endfor %}

        {% if loop.index is odd %}
            {% set batch_value = 1 %}
        {% else %}
            {% set batch_value = 2 %}
        {% endif %}
    </div>
{% endfor %}

以下是截图:

enter image description here

1 个答案:

答案 0 :(得分:0)

我不完全确定你要做什么,但我希望这会有所帮助:

Boilerplate代码

{% set images = getImages(gallery, 'Galeri', 'Detay') %}
{% for key, row in images|slice(0, 5)|batch(big == false ? 2 : 1) %}
    {% for image in row %}
        <img src="{{ asset(images[key].image) }}" />
    {% endfor %}
{% endfor %}

当你已经将变量分配给“row”时,我真的不明白为什么你需要内循环