À propos de ce tutoriel
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'extensions 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ères 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("/", 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, icibase.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 :
- Documentation de Twig
- Extension de Symfony qui rajoute des fonctions par défaut dans Twig.