树枝中的父循环上下文错误

时间:2014-01-21 14:22:00

标签: loops symfony twig

我正在使用Symfony 2.3和Twig 1.15。我有一个嵌套的foreach twig循环,我试图在外循环的最后一次迭代中获得不同的结果。

我见过这个:http://twig.sensiolabs.org/doc/recipes.html#accessing-the-parent-context-in-nested-loops 但是我得到了一个不同的结果 - 我访问父上下文的行中的错误:

Key "loop" for array with keys "groups, scores, type, user, assetic, app, avatarsDir, sonata_block, _parent, _seq, group, _key, subgroup" does not exist in "(...)"

相关代码,删除了类,ID和不必要的标记:

{% for group in groups %}
    <div>
        {% for subgroup in group.subgroups %}
            {% for test in subgroup.tests %}
                {% block test_block_box %}
                    {% if not loop.parent.loop.last %}

                        (html follows...)

                    {% else %}

                        (some different html follows...)

                    {% endif %}
                {% endblock %}
            {% endfor %}
        {% endfor %}
    </div>
{% endfor %}

我已经确定错误没有引用内部循环调用,即我用loop.parent.loop.last替换了loop.last并且页面成功呈现(内容显然是错误的,但它没有崩溃)

访问父上下文时我做错了什么?

1 个答案:

答案 0 :(得分:0)

只需删除{% block test_block_box %}{% endblock %},即可访问循环父级。

您可以尝试在{% block %}之外定义一个值,看看您是否可以在{% block %}中访问它:

{% for group in groups %}
    <div>
        {% for subgroup in group.subgroups %}
            {% for test in subgroup.tests %}
                {% set test_loop_is_last = loop.last %} {# define the value #}
                {% block test_block_box %}
                    {% if not test_loop_is_last %}{#test the value #}

                        (html follows...)

                    {% else %}

                        (some different html follows...)

                    {% endif %}
                {% endblock %}
            {% endfor %}
        {% endfor %}
    </div>
{% endfor %}