Dans cet article, on va parler du mot clé only du tag include de Twig. Il permet dans certains cas d'optimiser l'import d'un template.
Présentation de l'exemple
On souhaite afficher une page qui va lister les 10 derniers articles. Dans notre contrôleur, on retourne une variable articles qui est un tableau contenant l'ensemble des articles à afficher.
Cas standard
Dans le template Twig, on boucle sur cette variable. Pour chaque article, on inclue le template qui permet d'afficher un article. En résumé, cela donne :
[...]
{% for article in articles %}
{% include 'XxxBundle:Article:show.html.twig' %}
{% endfor %}
[...]
En procédant de cette manière, toutes les variables du template "parent" sont transmises au template "enfant". Ce qui peut être dans certains cas, une perte de ressource inutile, surtout si le template "parent" contient un nombre important de variable.
Dans notre cas, le template "enfant" a besoin uniquement de la variable article. On va donc optimiser cet include.
Cas optimisé
Comme vu en introduction, on va utiliser le mot clé only. Il permet d'indiquer à Twig que seules les variables indiquées en paramètres doivent être passées au template "enfant". Pour passer une variable, il faut utiliser le mot clé with :
[...]
{% for article in articles %}
{% include 'XxxBundle:Article:show.html.twig' with {'article': article} only %}
{% endfor %}
[...]
On économise ainsi des ressources, ce qui peut être utile sur des templates costauds et très sollicités.
Documentation de référence
Site officiel de TwigVersion
Cet article a été testé avec :
Symfony : 2.7
Twig : 1.18