Skip to Content

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, email unique, 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 (name requis, email valide/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

BesoinChapitre
Entité & mapping6.1
Migrations & fixtures6.4
Timestamps auto6.5
CRUD & Twig7.1, 7.4
Formulaires & validation9.1, 9.3
Flash4.5

🧭 Étapes suggérées

  1. symfony new annuaire --version="7.4.*" --webapp, composer require orm maker.
  2. make:entity Provider (name, email, active, createdAt).
  3. Connecter la base, make:migration, migrations:migrate.
  4. make:crud Provider → adapter le contrôleur/les templates.
  5. Ajouter les contraintes (#[Assert\NotBlank], #[Assert\Email], #[UniqueEntity] + unique: true).
  6. make:fixtures pour peupler quelques prestataires.
  7. 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.