2.8 KiB
2.8 KiB
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()retournetruedans 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()ouupdate()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 utiliseGETcar la recherche ne modifie aucune donnée.paginate(10)limite chaque page à 10 éléments ;links()affiche la navigation ;withQueryString()gardesearchdans les liens suivants.- Le total affiché utilise
total(), carcount()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.
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.