Ceci est une ancienne révision du document !
Templates
Le moteur de templates est responsable de l'affichage des vues. Il est conseillé d'utiliser Twig, plutôt que PHP, comme moteur de templates.
Installation
composer require twig
Éléments syntaxiques
Twig utilise 3 types de tags :
{{ ... }} | “affiche quelque chose” équivalent du echo de php : affiche une variable ou le résultat d'une expression. |
---|---|
{% ... %} | “Fait quelque chose”: tag agissant sur la logique du template ; il est utilisé par exemple pour faire des itérations, ou des contrôles. |
{# ... #} | “Commente quelque chose”: équivalent du PHP /* comment */. Il est utilisé pour ajouter des commentaires sur 1 ou plusieurs lignes. Le commentaire ne sera pas présent dans la page réponse. |
Twig contient aussi des filtres (filters), qui permettent de modifier le contenu affiché.
L'appel suivant affiche la variable title en majuscules :
{{ title|upper }}
Tags
La liste complète des tags est fournie dans la documentation twig
Afficher {{...}}
Afficher une variable | Nom : {{nom}} |
Afficher un élément de tableau | Utilisateur en position 0 : {{users[0]}} |
Accès aux membres (utilisation implicite du getter getNom()) | Nom d'utilisateur : {{user.nom}} |
Application d'un filtre | Pseudo en majuscules : {{ pseudo|upper }} |
Utilisation d'une combinaison de filtres | Message : {{ news.texte|striptags|title }} |
Affichage d'une date de type DateTime | Date : {{ date|date('d/m/Y') }} |
Concaténation | Identité : {{ nom ~ ' ' ~ prenom }} |
Filtres
upper | Met toutes les lettres en majuscules. | {{ var|upper }} |
---|---|---|
striptags | Supprime toutes les balises XML. | {{var|striptags }} |
date | Formate la date selon le format donné en argument. La variable en entrée doit être une instance de DateTime. | {{ date|date('d/m/Y') }} |
format | Insère des variables dans un texte, équivalent à printf. | {{ "Il y a %s pommes et %s poires"|format(153, nb_poires) }} |
length | Retourne le nombre d'éléments du tableau, ou le nombre de caractères d'une chaîne. | Longueur de la variable : {{ texte|length }} |
Faire {{#...}}
if
voir Doc twig if
Permet de poser une condition, comme en php
{% if online == false %} <p>Our website is in maintenance mode. Please, come back later.</p> {% endif %}
for
voir Doc twig for
Equivalent du foreach php :
<h1>Members</h1> <ul> {% for user in users %} <li>{{ user.username|e }}</li> {% endfor %} </ul>