Publié le : 30/07/2021

Layouts et Assets pour les Vues dans Symfony

Symfony Layouts Assets Vue

Pour avoir du code HTML valide pour Symfony, il faut définir les Layouts et les Assets de la Vue dans l’architecture MVC.

Héritage dans Twig

Avec Twig, nous avons la possibilité d’hériter d’un autre template. Ce qui permet de ne définir dans son template que les éléments qui change. Et ainsi de ne pas modifier les éléments qui ne change pas ou presque. Les éléments qui ne change pas ou presque sont les :

  • menus ;
  • footers ;
  • la place du logo.

Pour faire de l’héritage avec Twig, on entre le code suivant :

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

Ainsi le code de default.html.twig (il se trouve dans l’article : Twig le moteur moderne de template de Symfony) deviendra :

{% extends 'base.html.twig' %}
{% block body %}
<h1>Hello World</h1>
{{ name }} - {{ "now"| date("d/m/Y H:i:s")}}
{% endblock %}

Il est important de noter que dans le fichier Twig base.html.twig il y a le bloc body. C’est ce que l’on retrouve avec le code ci-dessous :

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>{% block title %}Welcome!{% endblock %}</title>
        {# Run `composer require symfony/webpack-encore-bundle`
           and uncomment the following Encore helpers to start using Symfony UX #}
        {% block stylesheets %}
            
        {% endblock %}

        {% block javascripts %}
            
        {% endblock %}
    </head>
    <body>
        {% block body %}{% endblock %}
    </body>
</html>

Ce code a été généré par Symfony lors de l’installation du bundle Twig.

Ajout des layouts et assets dans la vue de Symfony

Pour ajouter les layouts et assests, nous allons travailler dans le répertoire public. Dans ce répertoire, nous allons ajouter les répertoires images et css.

Ensuite dans notre fichier twig (default.html.twig), nous allons ajouter les lignes suivantes :

{% block stylesheets %}
    <link rel="stylesheet" href="{{ asset('/css/css.css') }}" />
{% endblock %}

Mais pour que cela fonctionne, il faut installer l’asset avec la commande :

$ composer req asset

Les mots clés rattachés à cet article :

Nos clients

Une vingtaine de clients nationaux et internationaux