Héritage
L'un des principaux avantage du moteur de template est le découpage fonctionnel des différentes parties d'une page.
On crée un élément père et les fils ne rédéfinissent que les parties utiles tout en récupérant le contenu du parent.
Parent :
<!doctype html> <html> <head> <title>{% block title %}Titre par défaut{% endblock %}</title> </head> <body> {% block body %} {% endblock %} </body> </html>
Fils
{% extends "LPARSDiabloBundle:Layout:layout.html.twig" %} {% block title %}{{ parent() }} - Sous-titre de l'enfant{% endblock %} {% block body %} Contenu de la page du fils {% endblock %}
On peut donc redéfinir les blocs du parent, sinon le contenu par défaut est utilisé.
Inclusion
Un autre cas de figure est l'inclusion de template. Par exemple, pour les cours de développement web, un menu est disponible dans la page pour passer d'un chapitre à l'autre.
On utilise la directive twig
{{ render(controller("LPARS/CoursBundle/Vues/menu")) }}
Exercice
Créer une branche layout à partir de la branche master
Ajouter un layout global (vue), qui sera utilisé comme base pour toutes les pages de votre site (modifier les autres vues en conséquence).
Créer une branche navigation à partir de la branche master
Réaliser le menu équivalent à celui de ce cours pour la navigation de votre site :
- Ajouter la vue pour le menu
- Ajouter l'action pour le menu, contenant les liens et titres du menu :
- Accueil
- Liste des joueurs
- Lien vers DiabloProgress
- Faire appel à cette vue dans votre layout