Christophe Meneses - Développeur
  • Liste des articles
  • Contact
  • Linkedin
  • Github
  • Flux RSS
Tous les articles PHP / Symfony / Twig Optimiser les include des templates Twig
PHP Symfony Twig

Optimiser les include des templates Twig

Publié le 28/06/2015.

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 Twig

Version

Cet article a été testé avec :

Symfony : 2.7
Twig : 1.18
Début de l'article

Tous les articles PHP / Symfony / Twig Optimiser les include des templates Twig

Liste des articles par catégorie

  1. Tous 124
  2. Apache2
  3. APC1
  4. Assetic2
  5. Bash2
  6. CentOS9
  7. Composer6
  8. CSS1
  9. Debian1
  10. Deployer1
  11. Design Pattern11
  12. Docker6
  13. Doctrine14
  14. Elasticsearch3
  15. Git6
  16. Google Charts1
  17. Hardware1
  18. Hébergement1
  19. JavaScript1
  20. jQuery4
  21. Kibana2
  22. Logstash1
  23. Machine Learning1
  24. MariaDB2
  25. Memcached2
  26. MySQL3
  27. Nginx2
  28. Panther3
  29. PHP59
  30. PHP_CodeSniffer1
  31. PHP-FPM2
  32. PhpMyAdmin1
  33. PhpStorm3
  34. PHPUnit6
  35. PostgreSQL2
  36. RabbitMQ2
  37. SQL1
  38. SVN4
  39. Sybase ASE1
  40. Symfony56
  41. Twig3
  42. Ubuntu14
  43. Vue.js2
  44. Vuex1
  45. Webpack Encore1
  46. Xdebug5

Derniers articles publiés

PHP
Différence entre les mots clés self et static dans le langage PHP

Symfony / Docker / Nginx
Migrer un projet Symfony du protocole HTTP 1.1 au protocole HTTP 2

Vue.js
Utiliser un filtre Vue.js directement dans le JavaScript

PHP / Symfony
Supprimer les messages de dépréciation de type : The "sensio_framework_extra.routing.loader.annot_*" service is deprecated since version 5.2

Symfony / RabbitMQ
Exemple d'utilisation du composant Messenger pour envoyer des emails en asynchrone avec RabbitMQ

PHP Symfony MariaDB HTML5 CSS3 JavaScript Bootstrap

© 2014 - 2019 réalisé par Christophe MENESES