Symfony : -Filtres et Fonctions dans Twig

Les filtres et les fonctions sont des outils essentiels dans Twig pour manipuler les données et exécuter des tâches spécifiques dans les templates. Tandis que les filtres transforment ou formatent les données, les fonctions permettent d’exécuter des opérations plus complexes, comme générer des URL ou déboguer des variables.

Les filtres permettent d’appliquer des transformations à des données. Ils sont particulièrement utiles pour préparer les données destinées à l’affichage. La syntaxe générale d’un filtre est la suivante :

{{ variable|nom_du_filtre }}
{{ 'texte'|nom_du_filtre('paramètre1', 'paramètre2') }}

Plusieurs filtres peuvent être enchaînés :

{{ variable|filtre_1|filtre_2|filtre_3 }}

Principaux Filtres Twig

a) Filtres pour les chaînes de caractères

  1. lower : Convertit une chaîne en minuscules.
    {{ 'Bonjour'|lower }}  {# Résultat : 'bonjour' #}
    
  2. upper : Convertit une chaîne en majuscules.
    {{ 'Bonjour'|upper }}  {# Résultat : 'BONJOUR' #}
    
  3. title : Met chaque mot en majuscule.
    {{ 'le gilet bleu'|title }}  {# Résultat : 'Le Gilet Bleu' #}
    
  4. capitalize : Met la première lettre en majuscule.
    {{ 'le gilet bleu'|capitalize }}  {# Résultat : 'Le gilet bleu' #}
    

b) Filtres liés à l’échappement

  1. escape (alias e) : Échappe les caractères spéciaux pour éviter les attaques XSS.
    {{ '<h1>Titre</h1>'|escape }}  {# Résultat : '&lt;h1&gt;Titre&lt;/h1&gt;' #}
    
  2. raw : Affiche une chaîne sans échappement.
    {{ '<h1>Titre</h1>'|raw }}  {# Résultat : '<h1>Titre</h1>' #}
    
  3. striptags : Supprime les balises HTML.
    {{ '<h1>Titre</h1>'|striptags }}  {# Résultat : 'Titre' #}
    

c) Filtres pour l’encodage

  1. convert_encoding : Change l’encodage d’une chaîne.
    {{ texte|convert_encoding('UTF-8', 'ISO-8859-1') }}
    
  2. json_encode : Convertit un tableau en JSON.
    {{ {'cle': 'valeur'}|json_encode }}  {# Résultat : '{"cle":"valeur"}' #}
    
  3. url_encode : Encode une chaîne pour une URL.
    {{ 'mot clé'|url_encode }}  {# Résultat : 'mot%20clé' #}
    

Les Fonctions Twig

Les fonctions dans Twig sont similaires aux fonctions en PHP. Elles exécutent des actions spécifiques et retournent une valeur. Voici quelques-unes des fonctions les plus courantes.

a) Twig et le Routage

  1. path : Génère une URL relative vers une route.
    <a href="{{ path('ma_route') }}">Visiter ma page</a>
    

    Avec des paramètres :

    <a href="{{ path('hello', { 'name': 'world' }) }}">Visiter ma page</a>
    
  2. url : Génère une URL absolue vers une route (utile pour les e-mails).
    <a href="{{ url('ma_route') }}">Visiter ma page</a>
    

b) Débogage avec dump

Twig propose une fonction dump pour inspecter les variables dans les templates, similaire à var_dump() en PHP. Cela est utile pour le débogage.

{{ dump(variable) }}

Cas pratiques et astuces

a) Créer des liens dynamiques

Générer des liens dynamiques basés sur des données :

{% for article in articles %}
    <a href="{{ path('article_show', { 'id': article.id }) }}">
        {{ article.title }}
    </a>
{% endfor %}

b) Inclure du JSON dans un script

Utiliser le filtre json_encode pour intégrer des données dans un script JavaScript :

<script>
    var options = {{ options|json_encode|raw }};
</script>

c) Travailler avec des encodages multiples

Gérer des données issues de sources externes non UTF-8 :

{{ texte_externe|convert_encoding('UTF-8', 'ISO-8859-1') }}

  1. Documentation officielle Twig – Filtres
  2. Documentation officielle Twig – Fonctions
  3. Cheatsheet Twig

Les filtres et les fonctions dans Twig offrent une grande flexibilité pour manipuler et afficher des données dans vos templates. Qu’il s’agisse de transformer des chaînes, de générer des URL, ou de déboguer vos données, ces outils sont indispensables pour créer des vues dynamiques et maintenables dans Symfony. Leur maîtrise vous permettra d’exploiter tout le potentiel de Twig.

Sites Ressources e-Plus Pour Laravel 11

1. Packagist Description : Le principal dépôt de packages PHP, avec une catégorie spécifique pour Laravel. Lien : https://packagist.org Ressources :...