Tester si un bloc dans un template Twig existe

Publié le 22/05/2021 • Mis à jour le 22/05/2021


English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧 Close

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.


Démo HTML du snippet

Le bloc "defined_in_demo" est défini ! ✅

The bloc "foo_bar" n'est PAS défini ! ❌


{% 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 %}

 Plus sur Stackoverflow   Lire la doc  Snippet aléatoire