我正在使用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
并且页面成功呈现(内容显然是错误的,但它没有崩溃)
访问父上下文时我做错了什么?
答案 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 %}