Twig
Twig
Twig
UP Web
AU: 2021/2022
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..
7
2. Le moteur de template Twig
"twig/twig": "^2.12|^3.0"
8
2. Le moteur de template Twig
12
3. La Syntaxe de base
• {# … #} définit un commentaire
13
3. La Syntaxe de base
a. Affichage et déclaration des variables
• Affichage d’une variable simple: {{ title}} est esquivant à <?php echo $title ?>
• Affichage d’index d’un tableau {{ T[‘i’]}} est équivalant à <?php echo T[‘i’] ?>
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 dede determiner si une variable ´
respecte un motif donne 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
{{ produit.nom }}
{% endfor %}
• Parcourir un tableau indexé: (on peut utiliser l’operateur ´ .. pour definir un intervalle )
{{ i }}
{% endfor %}
// affiche 0123456789
20
3. La Syntaxe de base
d. La structure itérative: for
{{ produit.nom }}
{% endfor %}
{{ article.nom }}
{% endfor %}
21
3. La Syntaxe de base
d. La structure itérative: for
{{ produit.nom }}
{% endfor %}
{{ article.nom }}
{% endfor %}
22
3. La Syntaxe de base
d. La structure itérative: for
• clés et valeurs:
{{ key }} {{ value }}
{% endfor %}
Exemple:
23
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…
24
3. La Syntaxe de base
e. Les filtres (exemples)
Les filtres Description
{{ '12345'|slice(1, 2) }}
{# outputs 23 #}
26
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ère 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ère les informations de l’utilisateur courant, c’est ni plus ni
moins que l’entité User.
28
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")}}
29
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.
30
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.
31
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és à 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")}}
32
3. La Syntaxe de base
h.Les liens
Path() et url ()
o Elles permettent de référencer une route.
• url() genére une URL absolue.
• Path() genére une URL relative.
• Exemple:
<a href="{{ path(’produit_route’) }}">Produit</a> (Le lien generé sera de type
« /produit » )
33
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"/>
34
4. Ajout de fichier:
Pourquoi utiliser Asset () ?
• Bien qu’il soit possible de mettre des URL directement sans mettre asset(), cette
• Les URL à codage en dur peuvent être un inconvénient: Vous devez écrire le
• Lorsque vous utilisez le composant Asset, vous pouvez regrouper les actifs dans
35
• References:
• https://twig.symfony.com/
• https://connect.ed-diamond.com/GNU-Linux-Magazine/GLMF-199/Moteur-de-Te
mplate-Twig-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
36