|
|
@@ -0,0 +1,55 @@
|
|
|
+TP6 - Blade, le moteur de vues
|
|
|
+==============================
|
|
|
+
|
|
|
+Objectif
|
|
|
+--------
|
|
|
+
|
|
|
+Dans le TP précédent, nous avons migrer notre application dans le framework Laravel pour obtenir une version fonctionnelle mais qui ne respecte pas les principes MVC.
|
|
|
+
|
|
|
+Dans ce TP6, l'objectif est de mettre en place la partie Vues grâce à Blade.
|
|
|
+
|
|
|
+[Toute la documentation officielle se trouve ici](https://laravel.com/docs/5.5/blade)
|
|
|
+
|
|
|
+
|
|
|
+Exercice 1 : Le layout principal
|
|
|
+--------------------------------
|
|
|
+
|
|
|
+1. Dans `resources/views`, créer un répertoire `shared` avec un fichier `message.blade.php` qui :
|
|
|
+ - vérifie que la variable `$message` existe et n'est pas nulle
|
|
|
+ - si c'est le cas, l'affiche
|
|
|
+
|
|
|
+1. Dans `resources/views`, créer un répertoire `layout` avec un fichier `app.blade.php` contenant la structure HTML de base et les directives blade suivantes :
|
|
|
+ - un élément `<title>` paramétrable avec `@yield`
|
|
|
+ - une `@section` pour le contenu principal du corps HTML contenant elle-même déjà un élément `<h1>` identique au `<title>`
|
|
|
+ - un `@include` du fichier de la question précédente
|
|
|
+
|
|
|
+Exercice 2 : Les héritiers
|
|
|
+--------------------------
|
|
|
+
|
|
|
+Appliquer chaque étape aux quatre fichiers suivants :
|
|
|
+
|
|
|
+- `formpassword.php`
|
|
|
+- `signin.php`
|
|
|
+- `signup.php`
|
|
|
+- `welcome.php`
|
|
|
+
|
|
|
+1. Renommer le fichier en `.blade.php`.
|
|
|
+
|
|
|
+1. Adapter le fichier en le faisant étendre `app.blade.php `.
|
|
|
+
|
|
|
+Exercice 3 : Les messages comme paramètres
|
|
|
+------------------------------------------
|
|
|
+
|
|
|
+À ce stade tout devrait fonctionner excepté les messages qui ne s'affichent plus.
|
|
|
+
|
|
|
+Pour remédier à cela, dans `routes/web.php`, ajouter en paramètre des directives `view(...)` qui pointent vers l'un des 4 fichier de l'exercice 2 une variable nommée `message`. Elle a pour valeur le contenu de la variable de session "message" ou `null` si cette dernière n'existe pas.
|
|
|
+
|
|
|
+> Conseil n°1 : Utilisez la directive `->with(...)`.<br>
|
|
|
+> Conseil n°2 : Regardez la syntaxe [`??`](https://www.php.net/manual/fr/migration70.new-features.php) de PHP.
|
|
|
+
|
|
|
+Exercice 4 : Finitions
|
|
|
+----------------------
|
|
|
+
|
|
|
+1. Afin de rendre les vues totalement indépendantes des sessions, faites-en sorte que la variable de session `user` affichée dans `welcome.blade.php` soit transmise à la vue dans une variable `$user` depuis `routes/web.php`.
|
|
|
+
|
|
|
+1. Maintenant que Blade est utilisé, nous pouvons remettre en place la vérification CSRF des formulaires. Ajouter la directive requise aux formulaires Blade (voir [CSRF Protection](https://laravel.com/docs/6.x/csrf)) et dé-commenter la ligne correspondante dans `app/Http/Kernel.php`.
|