Twig
moteur de template
Twig est un moteur de templates pour le langage de programmation PHP, utilisé par défaut par le framework Symfony.
Twig
Première version | |
---|---|
Dernière version | 3.11.0 ()[1] |
Dépôt | github.com/twigphp/Twig |
Écrit en | PHP |
Système d'exploitation | Multiplateforme |
Type |
Système de gabarit PHP library (d) |
Licence | Licence BSD |
Site web | twig.symfony.com |
Fonctionnalités
modifier- 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
modifier- {{ ... }} : 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
modifierDu 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 defined ou is not empty )
|
** | Puissance |
| | Filtre |
[] | Entrée de tableau |
. | Attribut ou méthode d'un objet (ex : country.name )
|
Filtres
modifierLes 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
modifierloop
contient les informations de la boucle dans laquelle elle se trouve. Par exempleloop.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
modifierSi 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
modifier- « Release 3.11.0 », (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