Twig
Twig est un moteur de templates pour le langage de programmation PHP, utilisé par défaut par le framework Symfony.
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] :
- Eclipse
- Komodo
- NetBeans
- PhpStorm (nativement)
- Microsoft Visual Studio
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érateur | Rôle | 
|---|---|
| b-and | Et booléen | 
| b-xor | Ou exclusif | 
| b-or | Ou booléen | 
| or | Ou | 
| and | Et | 
| == | Est-il égal | 
| != | Est-il différent | 
| < | Inférieur | 
| > | Supérieur | 
| >= | Supérieur ou égal | 
| <= | Inférieur ou égal | 
| in | Dans | 
| matches | Correspond | 
| starts with | Commence par | 
| ends with | Se termine par | 
| .. | Séquence (ex : 1..5) | 
| + | Plus | 
| - | Moins | 
| ~ | Concaténation | 
| * | Multiplication | 
| / | Division | 
| // | Division arrondie à l'inférieur | 
| % | Modulo | 
| is | Test (ex : is definedouis 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
    
- loopcontient les informations de la boucle dans laquelle elle se trouve. Par exemple- loop.indexdonne 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
    
- « Release 3.9.3 », (consulté le )
- (en) « Templating Engines in PHP /Articles - Fabien Potencier », sur potencier.org (consulté le ).
- Symfony, « Filters - Documentation - Twig - The flexible, fast, and secure PHP template engine », sur twig.sensiolabs.org
- Symfony, « Extending Twig - Documentation - Twig - The flexible, fast, and secure PHP template engine », sur twig.sensiolabs.org
- Symfony, « Twig for Template Designers - Documentation - Twig - The flexible, fast, and secure PHP template engine », sur twig.sensiolabs.org
- Symfony, « set - Documentation - Twig - The flexible, fast, and secure PHP template engine », sur twig.sensiolabs.org
- Symfony, « Twig for Template Designers - Documentation - Twig - The flexible, fast, and secure PHP template engine », sur twig.sensiolabs.org
- Portail de la programmation informatique
    Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons – Attribution – Partage à l’identique. Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.
