1--TEST-- 2"block" function recursively called in a parent template 3--TEMPLATE-- 4{% extends "ordered_menu.twig" %} 5{% block label %}"{{ parent() }}"{% endblock %} 6{% block list %}{% set class = 'b' %}{{ parent() }}{% endblock %} 7--TEMPLATE(ordered_menu.twig)-- 8{% extends "menu.twig" %} 9{% block list %}{% set class = class|default('a') %}<ol class="{{ class }}">{{ block('children') }}</ol>{% endblock %} 10--TEMPLATE(menu.twig)-- 11{% extends "base.twig" %} 12{% block list %}<ul>{{ block('children') }}</ul>{% endblock %} 13{% block children %}{% set currentItem = item %}{% for item in currentItem %}{{ block('item') }}{% endfor %}{% set item = currentItem %}{% endblock %} 14{% block item %}<li>{% if item is not iterable %}{{ block('label') }}{% else %}{{ block('list') }}{% endif %}</li>{% endblock %} 15{% block label %}{{ item }}{% endblock %} 16--TEMPLATE(base.twig)-- 17{{ block('list') }} 18--DATA-- 19return ['item' => ['1', '2', ['3.1', ['3.2.1', '3.2.2'], '3.4']]] 20--EXPECT-- 21<ol class="b"><li>"1"</li><li>"2"</li><li><ol class="b"><li>"3.1"</li><li><ol class="b"><li>"3.2.1"</li><li>"3.2.2"</li></ol></li><li>"3.4"</li></ol></li></ol> 22