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.