Les premières routes et pages
Routes et contrôleurs, asset mapper, layouts Twig, menu dynamique, Web Profiler et pages d'erreur.
Durant cet atelier, nous allons créer les premières routes et pages de notre application Symfony.
Nous allons également mettre en place les styles, scripts, le layout de base, ainsi que le menu de navigation.
Enfin, nous allons mettre en place les outils de debug et personnaliser les pages d'erreur.
Création des premières pages
À savoir
Cette partie sera introduite en live-coding. Pensez à bien prendre des notes pour vous y référer plus tard !
Consigne
- Si ce n'est pas déjà fait, installez le maker bundle. Documentation : https://symfony.com/bundles/SymfonyMakerBundle/current/index.html
- Pour rendre des pages HTML et non du JSON, assurez-vous que le bundle Twig est installé. Documentation : https://symfony.com/doc/current/templates.html
- Créez la page d'accueil (méthode
GET, route/, nomHome) avec la commandesymfony console make:controller. - Créez la page des wallets (méthode
GET,route/wallets, nomWallets\List) avec la commandesymfony console make:controller. - Créez la page d'un wallet (méthode
GET,route/wallets/{id}, nomWallets\Show) avec la commandesymfony console make:controller. - Créez la page de paramètres (méthode
GET,route/settings, nomSettings) avec la commandesymfony console make:controller.
Attention
La commande ne génèrera pas forcément le bon code directement, vous devrez certainement ajuster les paramètres dans les attributs de route pour correspondre aux consignes.
Vous veillerez à ce que les routes soient correctement définies et que les pages retournent un contenu HTML basique via leurs templates Twig respectifs.
Vous veillerez aussi à ce que la route /wallets/{id} accepte un paramètre de route id et l'affiche dans le template.
Mise en place des styles & scripts
À savoir
Cette partie sera introduite en live-coding. Pensez à bien prendre des notes pour vous y référer plus tard !
Consigne
- Si ce n'est pas déjà fait, installez l'asset mapper. Documentation : https://symfony.com/doc/current/frontend/asset_mapper.html
- Supprimez le fichier
app.jsgénéré par défaut dans le dossierassets. - Créez un fichier CSS de base (par exemple
assets/styles/main.css) et un fichier JavaScript de base (par exempleassets/scripts/main.js). - Dans le template de base (
base.html.twig), supprimez la directiveimportmapsi elle est présente. - Utilisez la directive
asset()de Twig pour inclure ces fichiers dans le template de base.
Astuce
Vous pouvez ajouter Bootstrap ou Tailwind CSS pour faciliter la mise en forme.
Vous devrez simplement utiliser leurs modes CDN pour vous faciliter la tâche, et inclure leurs liens avant vos propres fichiers CSS/JS pour pouvoir les surcharger si besoin.
Mise en place du layout
base, layouts & pages
À savoir
Cette partie sera introduite en live-coding. Pensez à bien prendre des notes pour vous y référer plus tard !
Consigne
- Créez un dossier
_layoutsdans le dossiertemplates. - Définissez deux fichiers de layouts : un layout
_layouts/standard.html.twigpour les pages publiques et un layout_layouts/in_app.html.twigpour les pages accessibles aux utilisateurs connectés. - Faites en sorte que les layouts héritent d'un template de base
base.html.twigqui inclut les styles et scripts communs. - Liez les pages créées précédemment (via
make:controller) à leur layout respectif en utilisant l'héritage de templates de Twig (directive{% extends %}).- La page d'accueil utilisera le layout
_layouts/standard.html.twig. - Les pages des wallets utiliseront le layout
_layouts/in_app.html.twig.
- La page d'accueil utilisera le layout
Astuce
Vous trouverez toute la documentation nécessaire par ici :
- Documentation Twig : https://twig.symfony.com/doc/3.x/
- Héritage de templates Twig : https://twig.symfony.com/doc/3.x/tags/extends.html
- Intégration de Twig avec Symfony : https://symfony.com/doc/current/templates.html
Un menu dynamique
À savoir
Cette partie sera introduite en live-coding. Pensez à bien prendre des notes pour vous y référer plus tard !
Consigne
- Créez un dossier
_componentsdans le dossiertemplates. - Créez un
componentTwig pour le menu de navigation. (par exemple_components/menu.html.twig). - Incluez ce composant dans le layout
_layouts/in_app.html.twigavec la directive{% include %}. - Le menu doit contenir des liens vers les pages suivantes :
Wallets,Settings,Logout. - Utilisez la fonction
path()de Twig pour générer les URLs des liens du menu. - Mettez en évidence la page active dans le menu en utilisant une condition Twig pour comparer la route actuelle avec les routes des liens du menu. Documentation : https://symfony.com/doc/current/templates.html#the-app-global-variable
Mise en place du debug
À savoir
Cette partie sera introduite en live-coding. Pensez à bien prendre des notes pour vous y référer plus tard !
Consigne
- Si ce n'est pas déjà fait, installez le Web Profiler Bundle. Documentation : https://symfony.com/doc/current/profiler.html
- Vérifiez que le profiler est bien activé en environnement de développement.
- Accédez à une page de votre application et vérifiez que la barre de debug apparaît en bas de la page.
Customisation des pages d'erreur
Consigne
- Consultez la documentation suivante : https://symfony.com/doc/current/controller/error_pages.html
- Créez des templates Twig personnalisés pour les erreurs 404 et 500.
- Les pages devront afficher un message d'erreur clair, le code d'erreur et un lien pour revenir à la page d'accueil.
Introduction au projet
Présentation du projet fil rouge du module Symfony : une application de gestion de portefeuilles partagés, ses fonctionnalités et sa modélisation de données.
Utilisateurs et sécurité
Entité User, formulaires de connexion et d'inscription, contrôle d'accès et utilisateur connecté en Twig.