Cette partie est certainement la plus importante de ce cours. Vous allez apprendre à remplir vos templates avec la syntaxe proposée par le moteur. Vous pourrez donc faire des opérations complexes comme les conditions, les boucles, etc.
Affichage des variables et tableaux
Lors de l'affichage d'un template (vu un petit peu plus haut), vous passez en argument des variables, des tableaux, etc. Voyons un peu l'affichage côté template.
Code : HTML | Votre nom est : {{ name }}
|
Pour afficher une variable, il faut la placer entre accolades.
Note : si vous comptez utiliser Twig par la suite pour vos projets, je vous conseille de mettre un raccourci dans votre éditeur pour les doubles accolades et le tag {% ... %} que nous verrons après.
Supposons que vous voulez passer un tableau à votre template, il vous suffit de faire :
Code : HTML | {{ array['key'] }}
{{ array.key }} <!-- fait exactement la même chose qu'au dessus -->
|
Les filtres
Les filtres sont un concept que vous ne connaissez peut-être pas. En fait, un filtre agit comme une fonction. Il sont déjà définis mais vous pouvez créer les vôtres si vous le souhaitez. Pour appliquer un filtre à une variable, il faut séparer le nom de la variable et celui du filtre par un
pipe ( | ). Je vous propose ici de voir quelques filtres utiles.
- upper : met la chaîne de caractères qui le concerne en majuscule ;
- lower : fait exactement l'inverse d'upper et va mettre toutes les lettres en minuscule ;
- title : met la première lettre de chaque mot de la chaîne de caractère en majuscule. Comme un titre de noblesse ;
- length : retourne le nombre de caractères dont la chaîne se compose ;
- escape & e : pour échapper du code HTML vous pouvez utiliser escape ou e. Tous deux font la même chose mais l'un est plus court que l'autre.
Il y a encore beaucoup d'autres filtres proposés par Twig, en voici
la liste.
Les filtres sur les blocs
Si vous le souhaitez, plutôt que d'appliquer un filtre à chacune de vos variables, si vous comptez le faire sur beaucoup de variables ou une partie de votre site en particulier, je vous conseille de passer par cette méthode :
Code : HTML | {% filter upper %}
je vais être écrit en majuscule
{{ moi_aussi }}
{% endfilter %}
|
Vous pouvez aussi chaîner les filtres en en mettant plusieurs à la suite :
Code : HTML | {% filter upper|escape %}
je vais être écrit en majuscule <em>et échappé</em>
{% endfilter %}
|
Concernant le filtre escape, un bloc spécial a été prévu à cet effet. Ainsi, si par exemple vous avez mis lors de l'initialisation de Twig autoespace à true, vous pouvez faire ceci :
Code : HTML | {% autoescape false %}
<strong>Je vais être affiché en gras</strong>
{% endautoescape %}
|
Les commentaires
Ici, c'est juste un petit plus. Ça n'est pas vraiment utile (c'est moins intuitif, dira-t-on) si vous n'avez pas l'habitude de les utiliser. C'est un plus pour ceux qui utilisent Django par exemple :
Code : HTML | {# Je suis un commentaire #}
|
Les conditions
Pour faire des conditions, rien de plus simple :
Code : HTML | {% if online < 1 %}
Il y a {{ online }} membres en ligne
{% elseif online == 1 %}
Il n'y a qu'un seul utilisateur en ligne (Vous !)
{% else %}
Il n'y a aucun utilisateur en ligne. Cette phrase ne sera, en principe, jamais lue sauf par toi. Ô grand développeur !.
{% endif %}
|
Les tests utiles (built-in tests)
Les tests utiles vous permettent de réaliser des conditions plus "poussées" et plus intuitives. Par exemple, avec, vous pouvez savoir si une variable est divisible par 10 ou si une variable est définie.
defined
Celui-ci vous permet de savoir si une variable est définie ou pas. Il renverra true si c'est le cas et false si ça ne l'est pas.
Code : HTML | {% if session.pseudo is defined %}
Votre pseudo est {{ session.pseudo}} .
{% endif %}
|
divisibleby
Une test très intéressant est celui de savoir si votre variable est divisible par un certain nombre.
Code : HTML | {% if equipe.volley is divisibleby(6) %}
L'équipe sera divisé en 2 équipes de 6.
{% endif %}
|
empty
Verifie si une variable est vide ou pas.
Code : HTML | {% if equipe.volley is empty %}
Le match est annulé.
{% endif %}
|
Il y a encore beaucoup d'autres test-utiles mais je pense que vous avez compris le principe. Je vous renvoie donc vers
la liste de ces tests.
La boucle for
Ici rien de bien compliqué. Je vais surtout vous donner des exemples car il n'y a pas grand-choses à dire sur cette boucle.
Code : HTML | {% for i in 0..50 %}
Ceci est la ligne {{ i }}
{% enfor %}
|
En sachant que ce que je viens de vous montrer marche aussi avec des lettres :
Code : HTML | {% for lettre in 'a'..'z' %}
La lettre {{ letter }} est lettre numéro {{ loop.index }} de l'alphabet.
{% endfor %}
|
Si vous vous demandez d'où je sors le loop.index, il contient en fait le numéro de tour de boucle actuel. Vous pouvez voir d'autres variables de ce type
ici (en scrollant un peu selon la taille de votre écran ; il s'agit du tableau).
Vous pouvez également parcourir vos tableaux avec :
Code : HTML | {% for joueur in club %}
Le joueur {{ joueur.nom }} joue dans l'équipe {{ joueur.equipe }}
{% endfor %}
|
Depuis la version 1.2 de Twig, il est possible de lancer une boucle selon une condition dans le même "bloc". Ce n'est pas très clair alors je vous propose un exemple.
Code : HTML | {% for joueur in club if equipe is not empty %}
Le joueur {{ joueur.nom }} joue dans l'équipe {{ joueur.equipe }}
{% endfor %}
|
Définir des variables
J'ai décidé de mettre cette partie en dernier pour une raison bien particulière. La logique d'un moteur de template veut qu'on sépare les variables et les fonctions php de l'affichage du contenu. Déclarer des variables dans un template casse la logique du système. Je vous le montre quand même car c'est quand même vous qui allez entretenir le code que vous écrivez par la suite (en principe) et vous faîtes comme vous le souhaitez.
Code : HTML
Vous pouvez aussi définir des variables comme en Javascript. C'est à dire en mettant une seule fois "set" et en mettant à la suite les différentes variables séparées par des virgules :
Code : HTML | {% set mascotte, os = 'beastie', 'bsd' %}
|