Les Templates Twig Twig est un moteur de template HTML qui permet d'écrire des templates de pages HTML avec une syntaxe plus légère et plus lisible que du PHP Vanilla. Les trois syntaxes principales de twig sont :  {{ ... }} pour afficher une variable passée au template ou évaluer une expression {% ... %} pour afficher du contenu en suivant une logique comme des conditions ou des boucles {# ... #} pour afficher des commentaires qui ne seront pas rendus dans le HTML Afficher des variables Pour afficher une variable, utilisez la syntaxe {{ ... }} :

Hellow {{ name }}

Si votre variable est une objet ou un tableau associatif, vous pouvez utiliser l'opérateur  . pour accèder au champs d'un objet (publics ou exposé par getter / setter) ou à une valeur d'un tableau associatif :

Hellow {{ user.name }}

Twig vous protège des attaques type faille XSS car il s'occupe d'échapper les caractères HTML. Conditions Pour afficher des conditions, on peut faire un simple if :  {% if user.isLoggedIn %} Hello {{ user.name }}! {% else %} You are not logged in {% endif %} Boucles On peut afficher le contenu de colletions en utilisant des boucles : 

Réutiliser un Template On peut importer un Template dans un autre pour factoriser du contenu (et éventuellement lui passer des paramètres) : {{ include('block/menu.html.twig', {user: user}) }} Héritage et Layout Twig permet à un Template d'hériter d'un autres. Cela est très utile notamment quand on a un squelette de page à répéter sur beaucoup d'autres avec un contenu différent. Le Template parent va donc définir des  block nommés qui pouront être remplis par les templates enfant. Par exemple avec le template parents suivant qui correspond à un squelette générique de page HTML : {% block head %} {% block title %}{% endblock %} - Website {% endblock %}
{% block content %}{% endblock %}
Un exemple d'enfant :  {% extends "base.html" %} {% block title %}Home{% endblock %} {% block head %} {% endblock %} {% block content %}

Home

Welcome to my homepage.

{% endblock %} Il est également possible pour un block dans un enfant d'appeller le contenu du parent pour l'ajouter à son propre contenu au lieu de le remplacer :  {{ parent() }}