Tester si un bloc dans un template Twig existe
Publié le 22/05/2021 • Actualisé le 22/05/2021
Dans ce bout de code, nous voyons comment tester si un bloc dans un template Twig existe. C'est parfois utile de savoir si l'un des parents du template a déjà défini un bloc ou pas. On peut faire comme si nous testions une variable. Ce n'était pas possible avant la version 2 de Twig. Bien sûr, l'exemple serait plus pertinent dans un template étendant un autre, mais ce n'est pas le cas ici.
{% trans_default_domain 'snippet' %}
{% block defined_in_demo %}{% endblock %}
{% if block('defined_in_demo') is defined %}
<h3>{{ 'is_defined_148'|trans({'%block%':'defined_in_demo'}) }} ✅</h3>
{% else %}
<h3>{{ 'is_not_defined_148'|trans({'%block%': 'defined_in_demo'}) }} ❌</h3>
{% endif %}
{% if block('foo_bar') is defined %}
<h3>{{ 'is_defined_148'|trans({'%block%': 'foo_bar'}) }} ✅</h3>
{% else %}
<h3>{{ 'is_not_defined_148'|trans({'%block%': 'foo_bar'}) }} ❌</h3>
{% endif %}
Démo HTML du snippet
Le bloc "defined_in_demo" est défini ! ✅
The bloc "foo_bar" n'est PAS défini ! ❌
Plus sur Stackoverflow Lire la doc Snippet aléatoire