Publié le : 28/07/2021
Twig le moteur moderne de template de Symfony
Twig est le moteur de template pour le langage de programmation PHP, utilisé par défaut par le framework Symfony. Twig est :
- rapide : le code PHP généré est simple et optimisé ;
- sécurisé : car il dispose d’un mode sandbox ;
- flexible : il est alimenté par un parseur flexible.
En ce qui concerne cet article, nous allons présenter le moteur de template Twig de Symfony. On va présenter quelques codes Twig pour prendre en main ce moteur.
Pour pouvoir utiliser le moteur de template Twig avec Symfony, il nous faut installer le bundle correspondant. Nous avons déjà vu comment l’installer dans l’article : Symfony Vue Contrôleur.
Syntaxe de Twig
Pour pouvoir afficher des éléments avec Twig, il faut utiliser le syntaxe {{
et }}
. Ce qui se trouve entre ces deux éléments sera interprété.
Par exemple si on fait, dans un fichier Twig,
{{ 2 + 2 }}
Sur la page web qui contient ce syntaxe Twig, nous verrons 4
.
Ainsi, au niveau de Twig on peut faire des trucs avancé comme affiché :
- des variables dynamiques,
- des calculs (comme ci-dessus),
- de la concaténation avec
~
, - etc…
Dans le code ci-dessous, nous allons afficher le contenu d’un variable PHP.
Dans notre contrôleur, nous allons mettre le code suivant :
<?php
namespace App\Controller;
class DefaultController extends AbstractController{
public function index(){
$name = "smart-tech.mg";
return $this->render("default.html.twig",compact("name"));
}
}
Et après, nous allons intégrer notre variable $name
dans notre fichier Twig. Nous aurons alors le code suivant :
<h1>Hello World</h1>
{{ name }}
Les filtres du moteur de template de Twig dans Symfony
Pour illustrer l’utilisation des filtres dans Twig, nous allons faire un exemple.
Nous allons, de ce fait, créer un exemple qui va afficher la date actuelle. En premier, nous allons utiliser le code PHP pour récupérer la date actuelle. Ensuite, nous allons utiliser les filtres de Twig.
Exemple en utilisant le code PHP
Pour cet exemple, nous allons modifier notre Contrôleur comme suit :
<?php
namespace App\Controller;
class DefaultController extends AbstractController{
public function index(){
$name = "smart-tech.mg";
//-- Début du code à ajouter
$currentTime =(new DateTime)->format("d/m/Y H:i:s");
//-- Fin du code à ajouter
return $this->render("default.html.twig",compact("name","currentTime"));
}
}
Et au niveau du fichier Twig, nous allons mettre :
<h1>Hello World</h1>
{{ name }} - {{currentTime}}
Exemple en utilisant les filtres de Twig
Les filtres de Twig peuvent être vu dans la page web : https://twig.symfony.com/doc/2.x/.
Pour appliquer le filtre, on utilise le pipe « |« .
Ainsi, pour formatter la date, on utilise le filtre date de Twig. De ce fait, le contrôleur devient :
<?php
namespace App\Controller;
class DefaultController extends AbstractController{
public function index(){
$name = "smart-tech.mg";
return $this->render("default.html.twig",compact("name"));
}
}
Et le code dans le fichier Twig sera :
<h1>Hello World</h1>
{{ name }} - {{ "now"| date("d/m/Y H:i:s")}}