Files
BUT2/mini-crm/REPERES_TP3_TP4_TP5.md
T

5.3 KiB

Repères des modifications : TP3, TP4 et TP5

Les commentaires TP3, TP4 et TP5 dans le code indiquent à quel exercice sert chaque partie. Ils n'ont aucun effet sur le fonctionnement de Laravel. Certains fichiers du TP3 existaient déjà avant les corrections ; le repère identifie la fonctionnalité, pas l'auteur de chaque ligne.

Le TP6 a maintenant son propre guide : REPERES_TP6.md. Les règles du TP5 ont été déplacées des contrôleurs vers les Form Requests au TP6 ; leur comportement reste le même.

TP3 - Base de données et Eloquent

Objectif : enregistrer des clients et des produits dans SQLite, puis les lire avec Eloquent et les afficher dans Blade.

Fichier Rôle
database/migrations/2026_09_16_075551_create_clients_table.php Crée la table clients initiale.
database/migrations/2026_09_16_085026_create_product_table.php Crée la table products au pluriel, selon la convention du modèle Product.
app/Models/Client.php, app/Models/Product.php Déclarent les champs $fillable pour create() et update(). Le téléphone a été ajouté au modèle Client au TP5.
database/seeders/ClientSeeder.php, database/seeders/ProductSeeder.php Contiennent les trois clients et les cinq produits d'exemple.
database/seeders/DatabaseSeeder.php Appelle les deux seeders.
app/Http/Controllers/ProductController.php (index) Lit les produits avec Product::all() et transmet les résultats à la vue.
resources/views/products/index.blade.php Affiche les produits. La liste a ensuite reçu les actions CRUD du TP4.

La liste clients du TP3 est maintenant assurée par ClientController@index : Client::all() lit la table et clients.index affiche les données. L'ancien ClientsController.php reste dans le projet, mais les routes utilisent ClientController.php depuis le TP4.

TP4 - CRUD complet

Objectif : créer, lister, voir, modifier et supprimer un client ou un produit.

Fichier Rôle
routes/web.php Les deux appels Route::resource() génèrent sept routes pour Clients et sept pour Produits.
app/Http/Controllers/ClientController.php Méthodes index, create, store, show, edit, update, destroy.
app/Http/Controllers/ProductController.php Mêmes actions pour les produits. index reprend la lecture du TP3.
resources/views/clients/index.blade.php, resources/views/products/index.blade.php Listes, totaux et actions Voir/Modifier/Supprimer ; indication du stock faible pour les produits.
resources/views/clients/create.blade.php, resources/views/clients/edit.blade.php Formulaires de création et modification d'un client.
resources/views/products/create.blade.php, resources/views/products/edit.blade.php Formulaires équivalents pour les produits.
resources/views/clients/show.blade.php, resources/views/products/show.blade.php Détail d'un seul enregistrement.
resources/views/layouts/app.blade.php Navigation entre les pages.
tests/Feature/CrudTest.php Vérifie les opérations CRUD dans une base de test.

Dans les formulaires, @csrf protège les requêtes POST et @method('PUT') permet la mise à jour. La suppression utilise @method('DELETE') dans les listes.

TP5 - Validation des données

Objectif : refuser les données incorrectes avant l'enregistrement, expliquer les erreurs à l'utilisateur et conserver les valeurs saisies.

Fichier Rôle
database/migrations/2026_10_07_000000_adapt_clients_and_products_for_tp5.php Ajoute phone, rend city facultative et autorise les prix décimaux.
app/Models/Client.php Ajoute phone à $fillable.
app/Http/Requests/StoreClientRequest.php, app/Http/Requests/UpdateClientRequest.php Règles TP5 pour le nom, l'email, le téléphone et la ville, déplacées ici au TP6 avec leurs messages français.
app/Http/Requests/StoreProductRequest.php, app/Http/Requests/UpdateProductRequest.php Règles TP5 pour le nom, le prix et le stock, déplacées ici au TP6.
resources/views/clients/create.blade.php, resources/views/clients/edit.blade.php Liste des erreurs, message sous chaque champ et anciennes valeurs avec old().
resources/views/products/create.blade.php, resources/views/products/edit.blade.php Même traitement pour les produits.
resources/views/clients/index.blade.php, resources/views/clients/show.blade.php Affichent le téléphone et gèrent les champs facultatifs vides.
tests/Feature/ValidationTp5Test.php Vérifie les données refusées, les messages, les anciennes valeurs, les mises à jour et un prix décimal.

Le sujet impose phone: nullable|string|max:20 : cette règle accepte les lettres. Si le professeur demande un numéro composé uniquement de chiffres et séparateurs, il faudra ajouter une règle spécifique ; le TP5 ne la fournit pas.

Vérifier et lancer le projet

Dans un terminal ouvert dans le dossier mini-crm :

php artisan migrate:status
php artisan test
php artisan serve

Puis ouvrir http://127.0.0.1:8000/clients ou http://127.0.0.1:8000/products.

Les PDF TP3_walkthrough.pdf, TP4_walkthrough_complet.pdf et TP5_walkthrough_complet.pdf détaillent chaque TP. Les commentaires du code servent de repères rapides ; ce fichier indique où chercher.