浏览代码

Merge branch 'master' of git.unistra.fr:W31/W31

Clément Krebs 6 年之前
父节点
当前提交
7e7f934b3c
共有 2 个文件被更改,包括 70 次插入15 次删除
  1. 15 15
      TP5.md
  2. 55 0
      TP6.md

+ 15 - 15
TP5.md

@@ -4,13 +4,13 @@ TP5 - Prise en main de Laravel
 Objectif
 --------
 
-Intégrer votre application d'authentification au framework Laravel.
+Intégrer l'application d'authentification au framework Laravel.
 Vous pouvez vous baser au choix :
 
-- sur de vos propres sources résultant du TP4
+- sur vos propres sources résultant du TP4
 - sur la proposition du répertoire [correction/TP4](correction/TP4)
 
-Noter que le but de ce TP est d'obtenir une application fonctionnelle **mais qui ne respectera pas encore le découpage MVC**.
+Notez que le but de ce TP est d'obtenir une application fonctionnelle **mais qui ne respectera pas encore le découpage MVC**.
 
 Les TPs suivants permettront de séparer progressivement les parties Modèle, Vue et Contrôleur en utilisant à bon escient les fonctionnalités offertes par Laravel.
 
@@ -18,7 +18,7 @@ Les TPs suivants permettront de séparer progressivement les parties Modèle, Vu
 Exercice 1 : Installation
 -------------------------
 
-Suivez les indications donnés dans [LARAVEL-installation.md](LARAVEL-installation.md).
+Suivez les indications données dans [LARAVEL-installation.md](LARAVEL-installation.md).
 
 **Attention : `composer` n'est installé que sur webetu, pas sur troglo.**
 
@@ -26,7 +26,7 @@ Suivez les indications donnés dans [LARAVEL-installation.md](LARAVEL-installati
 Exercice 2 : Préparation des vues
 ---------------------------------
 
-1. Copiez les fichiers suivants du TP4 dans `resources/views/` :
+1. Copier les fichiers suivants du TP4 dans `resources/views/` :
     - `adduser.php`
     - `authenticate.php`
     - `changepassword.php`
@@ -38,9 +38,9 @@ Exercice 2 : Préparation des vues
     - `welcome.php`
 
 1. Dans `routes/web.php` :
-    - Écrivez les routes GET et POST pour les fichiers ci-dessus (ne pas utiliser `Route::view`)
-    - Faites en sorte qu'une requête vers la racine du site propose la vue `signin.php`
-    - Testez toutes les routes GET. Regardez ce qu'il se passe lorsqu'on demande une route qui n'a pas été prévue dans `routes/web.php`
+    - Écrire les routes GET et POST pour les fichiers ci-dessus (ne pas utiliser `Route::view`)
+    - Faire en sorte qu'une requête vers la racine du site propose la vue `signin.php`
+    - Tester toutes les routes GET. Regarder ce qu'il se passe lorsqu'on demande une route qui n'a pas été prévue dans `routes/web.php`
 
 1. Dans chaque fichier remplacer toutes les références à des fichiers PHP par des références à des routes.
 
@@ -50,7 +50,7 @@ Exercice 2 : Préparation des vues
 Exercice 3 : Controleur et PDO
 ------------------------------
 
-1. Dans le fichier `.env`,  modifiez les champs `DB_HOST`, `DB_DATABASE`, `DB_USERNAME` et `DB_PASSWORD` avec les informations de l'ancien fichier `bdd.php`.
+1. Dans le fichier `.env`,  modifier les champs `DB_HOST`, `DB_DATABASE`, `DB_USERNAME` et `DB_PASSWORD` avec les informations de l'ancien fichier `bdd.php`.
 
 1. Copier le fichier `models/User.php` du TP4 dans le répertoire `app/` de votre application et le renommer `MyUser.php`. **Attention, ne pas écraser le fichier `User.php` existant déjà dans ce répertoire.**
 
@@ -60,7 +60,7 @@ Exercice 3 : Controleur et PDO
     - remplacer tous les `MyPDO::pdo()` par `DB::connection()->getPdo()`
     - ajouter en entête les deux `use` suivants :
         ```php
-        use use Illuminate\Support\Facades\DB;
+        use Illuminate\Support\Facades\DB;
         use PDO;
         ```
 
@@ -74,16 +74,16 @@ Exercice 3 : Controleur et PDO
 Exercice 4 : Le grand nettoyage
 -------------------------------
 
-1. Supprimer toutes les vérifications de `REQUEST_METHOD` : c'est maintenant le routage qui le gère.
+1. Supprimer toutes les vérifications de `REQUEST_METHOD` de tous vos fichiers : c'est maintenant le routage qui le gère.
 
 1. Supprimer tous les `session_start()` de tous vos fichiers.
 
-1. Dans `routes/web.php`, mettre toutes les routes dans un groupe. Dans la fonction qui contient maintenant toutes les routes, ajouter en première instruction un `session_start()`.
+1. Dans `routes/web.php`, mettre toutes les routes dans un groupe. Dans la fonction qui contient le routes de ce groupe, ajouter en première instruction un `session_start()`.
 
-1. Dans `routes/web.php`, remplacer l'appel à la vue `signout` par le code du fichier `signout.php` et modifier l'appel à `header()` par un appel à la méthode `redirect()` de Laravel. Supprimer `signout.php`.
+1. Dans `routes/web.php`, remplacer l'appel à la vue `signout` par le code du fichier `signout.php` et remplacer l'appel à `header()` par un appel à la méthode `redirect()` de Laravel. Supprimer `signout.php`.
 
-1. Dans le même esprit que la question précédente, déplacer le code de vérification de connexion situé au début des fichiers `changepassword.php`, `deleteuser.php`, `formpassword.php` et `welcome.php` dans les fonctions de routage correspondantes. Remplacer les appels à `header()` par des appels à la méthode `redirect()` de Laravel.
+1. Dans `routes/web.php`, placer les routes `changepassword`, `deleteuser`, `formpassword`, `welcome.php` et `signout` dans un groupe préfixé par `admin`. Ajouter `admin/` à ces routes dans tous les `header()` de tous vos fichiers de vues.
 
-1. Dans `routes/web.php`, placer les routes de la question précédente (+ la route `signout`) dans un groupe préfixé par `admin`. Ajouter `admin/` à ces routes dans tous les `header()` de tous vos fichiers de vues.
+1. Ajouter au début de la fonction du groupe `admin` la vérification de l'existence de la variable de session `user`. Si elle n'existe pas, faire une redirection vers `signin` en utilisant `redirect` de Laravel.
 
 **Vérifier que tout fonctionne.**

+ 55 - 0
TP6.md

@@ -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`.