Niv. 1 — Débutant : un back-office CRUD
Objectif : un vrai back-office avec base de données, Twig et formulaires. On construit un annuaire de prestataires — le socle de BookLab.
📋 Cahier des charges
Contexte — Un studio veut gérer ses prestataires (nom, email, actif ou non) via une interface d’admin.
Périmètre inclus
- Une entité
Provider(id,name,emailunique,active,createdAt). - Une base connectée (SQLite ou PostgreSQL), migrations.
- Un CRUD complet en Twig : liste, détail, création, édition, suppression.
- Formulaires avec validation (
namerequis,emailvalide/unique). - Messages flash après chaque action, pattern POST → Redirect.
- Quelques fixtures de démo.
Périmètre exclu — API, sécurité (on l’ajoute au Niv. 2), temps réel.
Livrables — un back-office fonctionnel sur /admin/providers.
Critères de réussite
- Migrations appliquées, schéma valide (
doctrine:schema:validate). - Les 5 opérations CRUD marchent, avec validation et flash.
- Un email dupliqué est refusé proprement.
- Aucune URL en dur (génération par nom de route).
🗺️ Endroits à visiter
| Besoin | Chapitre |
|---|---|
| Entité & mapping | 6.1 |
| Migrations & fixtures | 6.4 |
| Timestamps auto | 6.5 |
| CRUD & Twig | 7.1, 7.4 |
| Formulaires & validation | 9.1, 9.3 |
| Flash | 4.5 |
🧭 Étapes suggérées
symfony new annuaire --version="7.4.*" --webapp,composer require orm maker.make:entity Provider(name, email, active, createdAt).- Connecter la base,
make:migration,migrations:migrate. make:crud Provider→ adapter le contrôleur/les templates.- Ajouter les contraintes (
#[Assert\NotBlank],#[Assert\Email],#[UniqueEntity]+unique: true). make:fixturespour peupler quelques prestataires.- Vérifier chaque opération + la validation d’un email dupliqué.
🎁 Bonus : générez le slug du prestataire automatiquement en
prePersist(entity listener, 6.5).
Projet suivant : Niv. 2 — Intermédiaire.