Skip to Content
SymfonyPartie 9 — Formulaires, validation & uploadVue d'ensemble de la partie

Partie 9 — Formulaires, validation & upload

Public : BookLab a un back-office (Partie 7) rendu réactif (Partie 8). Il manque le moyen propre de collecter et valider des données saisies : les formulaires. Objectif de la partie : maîtriser le composant Form de Symfony, le brancher sur des entités ou des DTO, appliquer la validation (contraintes), thémer les formulaires, et gérer l’upload de fichiers (avec Flysystem/S3). La validation acquise ici sert aussi l’API (Partie 11).

Ce que vous saurez faire à la fin de cette partie

  • Construire des FormType réutilisables et les lier à une entité ou un DTO.
  • Traiter une soumission (handleRequest) et gérer les erreurs.
  • Écrire des règles de validation avec les attributs #[Assert\...] (et des contraintes personnalisées).
  • Thémer les formulaires (Bootstrap/Tailwind) et personnaliser le rendu.
  • Gérer l’upload de fichiers proprement (VichUploader, stockage Flysystem/S3).

Le point clé pour l’architecture BookLab

La validation que vous écrivez ici (contraintes sur des DTO) est la même qui protège l’API consommée par Next.js (via #[MapRequestPayload], Partie 4.4, et API Platform, Partie 11). Formulaires HTML (back-office) et API JSON (front Next.js) partagent les règles métier. On valide une fois, on protège les deux entrées.

Chapitres de cette partie

  1. Le composant FormFormType, champs, options, rendu de base, cycle handleRequest.
  2. Formulaires liés aux entités & aux DTOdata_class, mapping, DTO d’entrée vs entité directe, POST/Redirect/GET.
  3. La validation — contraintes #[Assert\...], groupes, validation côté serveur, contraintes personnalisées.
  4. Thématiser les formulaires — form themes, Bootstrap/Tailwind, rendu champ par champ, erreurs.
  5. Upload de fichiers — champ FileType, VichUploader, stockage Flysystem/S3, sécurité des uploads.

Prochain chapitre : 9.1 — Le composant Form.