L3 Info : PHP et Applications Web
 
◃  Ch. 13 Symfony 7.4  ▹
 

Twig en détail

  • Documentation officielle https://twig.symfony.com/
  • Les fichiers twig sont stockés dans le dossier templates
  • Intégration de variables au sein des templates
    • Il n'est pas nécessaire de transmettre systématiquement des scalaires (types simples)
    • Le moteur de template offre des accès rapides aux variables complexes, ainsi l'appel {{ struct.var }} correspond par ordre de priorité à :
      1. $struct['var'] (élément d'un tableau) ;
      2. $struct->var (propriété publique d'un objet) ;
      3. $struct->var() (méthode publique d'un objet) ;
      4. $struct->getVar() (getter) ;
      5. $struct->isVar() ;
      6. $struct->hasVar() ;
      7. null le cas échéant.
  • Utilisation de routes nommées et de la fonction path() pour les liens :
    <h1>
      <a href="{{ path('maRouteTitreNom', {title: Docteur, lastName: Jekyll}) }} ">Lien vers maRoute</a>
    </h1>
  • La fonction url() est similaire à path() mais retourne une url absolue plutôt que relative
  • La fonction asset() renvoie le chemin vers un fichier issue du dossier assets (css, images, js, ...)
  • Il est possible d'associer un filtre à une variable afin de la formater ou de la transformer
    • Les filtres sont appelés avec la syntaxe {{ var|filtre }}
    • Quelques exemples :
      • {{ var|upper }}
      • {{ var|length }}
      • {{ var|date("Y-m-d") }}
  • Quelques structures de contrôle permettent de manipuler les variables transmises au template :
    • Dans un bloc délimité par {% block %} et {% endblock %} :
    • Définition d'une variable locale : {% set var = 1 %}
    • Boucle : {% for var in vars %} ... {% endfor %}
    • Si : {% if lastName|length > 0 %} ... {% endif %}
    • Autres structures : {% elseif %}, {% endif %}, ...
    • https://twig.symfony.com/doc/3.x/tags/index.html