Réalisation du tp3, tp4, tp5 et tp6 avec documentation.

This commit is contained in:
2026-10-07 00:48:56 +02:00
parent fc4c55546f
commit 4a84a17cbf
40 changed files with 1584 additions and 120 deletions
+37
View File
@@ -0,0 +1,37 @@
# Repères TP6 dans le code
Le TP6 a déplacé la validation hors des contrôleurs et ajouté la recherche et la pagination. Les commentaires `TP6` indiquent les lignes importantes directement dans le projet.
| Fichier | Ce qui a été fait |
| --- | --- |
| `app/Http/Requests/StoreClientRequest.php` | Autorise la création, définit les règles et les messages clients du TP5. |
| `app/Http/Requests/UpdateClientRequest.php` | Valide la modification et ignore l'email du client courant dans le contrôle d'unicité. |
| `app/Http/Requests/StoreProductRequest.php` | Valide la création d'un produit. |
| `app/Http/Requests/UpdateProductRequest.php` | Valide la modification d'un produit. |
| `app/Http/Controllers/ClientController.php` | Reçoit les Form Requests avec injection de dépendances ; `index()` cherche dans nom, email et ville, puis pagine par 10. |
| `app/Http/Controllers/ProductController.php` | Même principe pour les produits ; recherche par nom et, pour le bonus, par prix. |
| `app/Http/Controllers/Controller.php` | L'ancien `index()` vide a été retiré pour laisser chaque contrôleur définir sa propre signature. |
| `resources/views/clients/index.blade.php` | Formulaire GET, total des résultats, liens de pagination. |
| `resources/views/products/index.blade.php` | Même chose pour les produits. |
| `resources/views/layouts/app.blade.php` | Taille lisible des flèches de pagination. |
| `tests/Feature/Tp6SearchPaginationTest.php` | Tests de recherche, pagination, conservation du filtre et validation Form Request. |
## À retenir
- `authorize()` retourne `true` dans ce TP : aucune restriction utilisateur n'est encore demandée.
- `rules()` décrit les données admises. `messages()` conserve les messages français du TP5.
- Laravel construit automatiquement le Form Request déclaré comme paramètre de `store()` ou `update()` et le valide avant d'exécuter la méthode.
- `$request->validated()` transmet uniquement les données acceptées à Eloquent.
- `?search=...` est un paramètre d'URL ; le formulaire utilise `GET` car la recherche ne modifie aucune donnée.
- `paginate(10)` limite chaque page à 10 éléments ; `links()` affiche la navigation ; `withQueryString()` garde `search` dans les liens suivants.
- Le total affiché utilise `total()`, car `count()` ne compte que les éléments de la page actuelle.
- Un `orderBy('id')` stabilise l'ordre des pages.
Pour tester plus de dix clients ou produits, les tests automatisés créent des enregistrements dans une base SQLite temporaire. Ils ne remplissent pas la base personnelle avec des données d'essai.
```powershell
php artisan test
php artisan serve
```
Ouvrir ensuite `/clients?search=jean` et `/products?search=clavier` dans le navigateur. Le déroulé détaillé et toutes les réponses sont dans `TP6_walkthrough_complet.pdf` et `TP6_rempli.pdf`.