Twig

Twig est un moteur de templates pour le langage de programmation PHP, utilisé par défaut par le framework Symfony.

Twig

Informations
Première version
Dernière version 3.3.2 ()[1]
Dépôt github.com/twigphp/Twig
Écrit en PHP
Système d'exploitation Multiplateforme
Type Moteur de template (en)
Licence Licence BSD
Site web twig.symfony.com

Il a été inspiré par Jinja, moteur de template Python[2].

Fonctionnalités

  • contrôle de flux complexe
  • échappement automatique
  • héritage des templates
  • filtres variables[3]
  • internationalisation (via gettext)
  • macros
  • langage extensible[4].

Supportés par les environnements de développement intégrés tels que[5] :

Et les éditeurs de texte :

Syntaxe

  • {{ ... }} : appel à une variable ou une fonction PHP, ou un template Twig parent ({{ parent() }}).
  • {# ... #} : commentaires.
  • {% ... %} : commande, comme une affectation, une condition, une boucle ou un bloc HTML.
    • {% set foo = 'bar' %} : assignation[6].
    • {% if i is defined and i == 1 %} ... {% endif %} : condition.
    • {% for i in 0..10 %} ... {% endfor %} : compteur dans une boucle.
  • ' : caractère d'échappement.

Pour créer un tableau itératif :

{% set myArray = [1, 2] %}

Un tableau associatif :

{% set myArray = {'key': 'value'} %}

Précédence des opérateurs

Du moins au plus prioritaire[7] :

OpérateurRôle
b-andEt booléen
b-xorOu exclusif
b-orOu booléen
orOu
andEt
==Est-il égal
 !=Est-il différent
<Inférieur
>Supérieur
>=Supérieur ou égal
<=Inférieur ou égal
inDans
matchesCorrespond
starts withCommence par
ends withSe termine par
..Séquence (ex : 1..5)
+Plus
-Moins
~Concaténation
*Multiplication
/Division
//Division arrondie à l'inférieur
 %Modulo
isTest (ex : is defined ou is not empty)
**Puissance
|Filtre
[]Entrée de tableau
.Attribut ou méthode d'un objet (ex : country.name)

Filtres

Les filtres fournissent des traitements sur une expression, si on les place après elle séparés par des pipes. Par exemple[3] :

  • capitalize : met une majuscule à la première lettre d'une chaine de caractères.
  • upper : met la chaine en lettres capitales.
  • first : affiche la première ligne d'un tableau.
  • length : renvoie la taille de la variable.

Variables spéciales

  • loop contient les informations de la boucle dans laquelle elle se trouve. Par exemple loop.index donne le nombre d'itérations déjà survenue.
  • Les variables globales commencent par des underscores, par exemple :
    • _route (partie de URL située après le domaine)
    • _self (nom de du fichier courant)
    Donc, pour obtenir la route d'une page : {{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}
  • Les variables d'environnement CGI, telles que {{ app.request.server.get('SERVER_NAME') }}

Exemple

Si le fichier "base.html" contient l'en-tête et le pied de page HTML communs à toutes les pages, ces dernières peuvent en hériter avec le mot extends.

{% extends "base.html.twig" %}
{% block navigation %}
    <ul id="navigation">
    {% for item in navigation %}
        <li>
            <a href="{{ item.href }}">
                {% if item.level == 2 %}
                      {{ item.name|upper }}
                {% endif %}
            </a>
        </li>
    {% endfor %}
    </ul>
{% endblock navigation %}

Notes et références

  • Portail de la programmation informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.