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 Form — FormType, champs, options, rendu de base, cycle handleRequest.
  2. Formulaires liés aux entités & aux DTO — data_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.