Twig est le moteur de templates de Symfony. Trois délimiteurs à connaître :
{{ ... }}affiche une valeur, échappée par défaut contre les failles XSS ;{% ... %}exécute une instruction (condition, boucle, héritage) ;{# ... #}est un commentaire.
{% extends 'base.html.twig' %}
{% block body %}
<h1>Bonjour {{ name|capitalize }}</h1>
{% if courses is empty %}
<p>Aucun cours.</p>
{% else %}
<ul>
{% for course in courses %}
<li><a href="{{ path('app_course_show', {slug: course.slug}) }}">{{ course.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% endblock %}
Héritage
Un template enfant étend un template parent et remplace des block. Le parent contient la structure commune (en-tête, pied de page).
Filtres et fonctions
|upper,|capitalize,|date('d/m/Y'),|lengthtransforment une valeur.path('nom_de_route', {...})génère une URL à partir du nom de la route.csrf_token('id')génère un jeton pour protéger un formulaire.
À retenir
- Ne désactive l'échappement (
|raw) que sur du contenu que tu maîtrises. - Garde la logique dans les contrôleurs et les services : un template affiche.