Moteur de template Twig — Formation Symfony 7

Dans ce chapitre je vous propose de découvrir le moteur de template Twig qui va nous permettre de générer des pages HTML complexes.

Pourquoi ne pas utiliser du PHP ?

PHP est déjà un moteur de Template, car il nous permet de mélanger logique et rendu, on peut alors se poser la question de la pertinence de l’utilisation d’un moteur de Template.

  • Twig intègre un système d’extension qui permet de définir un template de base que l’on pourra étendre en fonction de la page courante.
  • Les variables sont automatiquement échappées.
  • La syntaxe est plus simple que celle de PHP et permet à des personnes non familière avec le langage de pouvoir éditer la structure des pages.
  • Le langage est plus limité et empêche de faire n’importe quoi dans les fichiers de Template.

Notre première page Twig

Dans un controller qui étend du AbstractController on a une méthode render() qui permet de générer une réponse HTML en éxécutant un fichier twig.

class HomeController extends AbstractController {

    #[Route("https://grafikart.fr/", name: "home")]
    function index (): Response
    {
        return $this->render('home/index.html.twig', [
            'title' => 'Bonjour les gens !'
        ]);
    }

}

Les templates seront placés dans le dossier templates à la racine de notre projet.

{% extends 'base.html.twig' %}

{% block title %}{{ title }}{% endblock %}

{% block body %}
    <h1>Accueil</h1>

    <p>Bienvenue sur mon site</p>
{% endblock %}

On utilise ici 2 tags (délimités par {% %}) :

  • extends permet d’indiquer qu’on souhaite étendre d’un autre template, ici base.html.twig qui est en général créé par défaut lors d’une installation classique de Symfony.
  • block permet de placer du contenu dans un block qui est utilisé dans le template dont on hérite.

En apprendre plus

Pour découvrir les fonctionnalités de Twig il y a 2 liens essentiels :