Twig
Twig
Twig
UP Web
AU: 2023/2024
Plan
1. Qu'est ce qu'un moteur de templates
2. Le moteur de templates Twig
3. Syntaxe de base
a. Déclaration et affichage des variables
b. La concaténation
c. La structure conditionnelle
d. La structure itérative
e. Les filtres
f. Les fonctions
g. Les variables globales
h. Les liens
4. Ajout de fichiers
2
1. Qu'est ce qu'un moteur de templates
3
1. Qu'est ce qu'un moteur de templates
● Exemple:
UP-WEB 2020/2021 4
1. Qu'est ce qu'un moteur de templates
● Grace à un moteur de template, nous pouvons le séparer en 2
fichiers mais au meme temps le rendre plus clair et plus facile à
manipuler.
UP-WEB 2020/2021 5
1. Qu'est ce qu'un moteur de templates
Les principaux moteur de templates php
○ php
○ raintpl
○ smarty
○ twig
○ talus..
Inconvénients:
● la gestion des templates multiplie légèrement le nombre de
fichiers de votre application.
● Un peu plus lent à exécuter (cache obligatoire)
● Un autre langage à apprendre
6
2. Le moteur de template Twig
● Twig est un moteur de templates développé par SensioLabs,apparu en 2009
● Utilisé par Symfony et d’autre projet PHP
● La Version actuelle: Twig 3
● Un projet symfony 4 offre la version 3 et la version 2.x de Twig ,la version de
Twig utilisée dépendra de la version de PHP
Twig 2.x Twig 3
7
2. Le moteur de template Twig
"twig/twig": "^2.12|^3.0"
12
3. La Syntaxe de base
• {# … #} définit un commentaire
13
3. La Syntaxe de base
a. Affichage et déclaration des variables
14
3. La Syntaxe de base
Déclaration d’une variable
• une variable
{% set pi = 3.14 %} {% set foo = 'foo' %}
• tableau simple avec une série de valeurs:
{% set tableau=[1, 2, 3] %}
• tableau avec des clés:
{% set tableau={key1:value1, key2:value2} %}
• tableau avec valeur et clé:
{% set foo = [3, {"mot": "soleil"}] %}
afficher le contenu de 'mot' donc 'soleil':
{{ foo[1]['mot'] }}
• déclarer 2 variables en même temps // foo='foo' // bar='bar':
{% set foo, bar = 'foo', 'bar' %}
• foo contient le texte entre les 2 balises:
{% set foo %}
<div id="pagination">
… </div>
{% endset %}
15
3. La Syntaxe de base
b. Concaténation
{{ var1 ~ var2 }}
16
3. La Syntaxe de base
c. La structure conditionnelle:{% if … %} … {% endif %}
17
3. La Syntaxe de base
• Une condition avec matches: permet de déterminer si une variable ´ respecte
un motif donné par une expression régulière
{% if phone matches '/^[\\d\\.]+$/' %}
format telephone ok
{% endif %}
18
3. La Syntaxe de base
• Tests utiles:
is null: si est null ;
is constant: comparer si est une constante ;
is divisible by(x): si est divisible par x ;
is even: si est pair ;
is odd: si est impair ;
is iterable: si est du type itérable (comme une liste) ;
is same as: comparer 2 variables (en php correspond ===).
19
3. La Syntaxe de base
d. La structure itérative: for
• Parcourir un tableau associatif
{{ produit.nom }}
{% endfor %}
• Parcourir un tableau indexé: (on peut utiliser l'opérateur ´ .. pour définir un intervalle )
{{ i }}
{% endfor %}
20
3. La Syntaxe de base
d. La structure itérative: for
{{ article.nom }}
{% endfor %}
21
3. La Syntaxe de base
d. La structure itérative: for
• clés et valeurs:
{{ key }} {{ value }}
{% endfor %}
Exemple:
22
3. La Syntaxe de base
e. Les filtres
• Permettant de formater et modifier l’affichage d’une donnée
• On peut appliquer des filtres sur une variable à afficher, sur une variable d'une
condition IF ou d'une boucle FOR…
23
3. La Syntaxe de base
e. Les filtres (exemples)
Les filtres Description
{{ '12345'|slice(1, 2) }}
{# outputs 23 #}
24
3. La Syntaxe de base
e. Les filtres (exemples)
Les filtres Description
25
3. La Syntaxe de base
f. Les fonctions
• Permettant d’effectuer un traitement
Exemples:
● Dump(): affiche tout le détail d'un objet ou d'un tableau
{{dump(entities)}}
● Max():
● app
Variable globale qui va nous permettre de récupérer des
informations de notre application.
● app.environment
Récupérer l’environnement actuel pour savoir si vous êtes sur
l’interface de production ou de développement.
● app.debug
Permet de savoir si le mode debug est activé ou non (retourne
un boolean).
● app.user
Récupérer les informations de l’utilisateur courant, c’est ni plus ni
moins que l’entité User.
27
3. La Syntaxe de base
g.Les variables globales
● app.request
Retourne la séquence de tous les éléments disponibles de la requête HTTP.
● app.request.query
Permet d’accéder à un paramètre d’une requête GET en utilisant la
méthode get(). Exemple: {{app.request.query.get("nom_parametre")}}
● app.request.server: Retourne la séquence de la variable global
$_SERVER de PHP. Par exemple l’exemple suivant retourne le nom du
serveur hôte qui exécute le script. Exemple:
{{ app.request.server.get("SERVER_NAME") }}
● app.request.parameter
Permet d’accéder à un paramètre d’une requête POST en utilisant la
méthode get(). Exemple: {{app.request.parameter.get("nom_parametre")}}
28
3. La Syntaxe de base
g.Les variables globales
● app.request.cookies
Permet d’accéder à un paramètre contenu dans un COOKIE en utilisant la
méthode get(). Exemple: {{app.request.cookies.get("nom_parametre")}}
● app.request.headers
Retourne toutes les informations du header de la requête HTTP, permet
notamment de récupérer le user-agent, le referer, etc ...
● app.request.content
Retourne toutes les informations du contenu de la requête HTTP.
● app.request.languages
Permet de récupérer la séquence des langages acceptés par le navigateur,
par exemple : fr, fr-FR, etc.
29
3. La Syntaxe de base
g.Les variables globales
● app.request.charsets
Permet de récupérer la séquence des jeux de caractères acceptés par le navigateur,
par exemple : ISO-8859-1, UTF-8, etc.
● app.request.acceptableContentTypes
Permet de récupérer la séquence des types de contenus acceptés par le navigateur,
par exemple : text/html, application/xml, etc.
● app.request.pathInfo
Renvoie les informations sur le chemin d’accès de l’application sans le nom de
domaine.
● app.request.requestUri
Retourne l’uri qui est le chemin de la page courante sans le nom de domaine.
30
3. La Syntaxe de base
g.Les variables globales
● app.request.baseUrl
Retourne l’url de base de l’application.
● app.request.basePath
Renvoie le path de la base de l’application.
● app.request.method
Permet de récupérer les méthodes de requêtes qui ont été utilisées à
l’appel de la page, comme par exemple : POST, GET, etc.
● app.session
Permet d’accéder à un paramètre contenu dans une SESSION en utilisant
la méthode get(). Exemple: {{app.request.session.get("nom_parametre")}}
31
3. La Syntaxe de base
h.Les liens
Path() et url ()
o Elles permettent de référencer une route.
• url() génère une URL absolue.
• Path() génère une URL relative.
• Exemple:
<a href="{{ path(’produit_route’) }}">Produit</a> (Le lien généré sera de type
« /produit » )
32
4. Ajout de fichier
Asset(): Permet d’appeler les fichiers ressources css, js,images
définis dans le dossier public
● css
<link rel= “stylesheet” href=”{{asset(css/style.css)}}”, type = “text/css”>
● JS
<script src="{{ asset('js/script.js') }}"></script>
● Image
<img src="{{ asset (‘images/example.jpg’) }}" alt="Example"/>
33
4. Ajout de fichier:
Pourquoi utiliser Asset () ?
• Bien qu’il soit possible de mettre des URL directement sans mettre asset(), cette
pratique n'est plus.
• Les URL à codage en dur peuvent être un inconvénient: Vous devez écrire le
chemin complet de chaque élément.
• Lorsque vous utilisez le composant Asset, vous pouvez regrouper les actifs dans
des packages pour éviter de répéter la partie commune de leur chemin.
34
• References:
• https://twig.symfony.com/
• https://connect.ed-diamond.com/GNU-Linux-Magazine/GLMF-199/Moteur-de-Template-Twi
g-prise-en-main
• https://twig.symfony.com/doc/2.x/deprecated.html
• https://twig.symfony.com/doc/3.x/
• http://sdz.tdct.org/sdz/utilisation-de-twig-un-moteur-de-templates.html
35