Nouveau dans Symfony 8.2 (en développement). #[MapRequestPayload] répond 422 avec la liste des violations quand la validation échoue. Une validation faite à la main n'avait pas cette chance : une ValidationFailedException non attrapée donnait une erreur 500. Il fallait donc l'envelopper dans une HttpException.
Avant
if (\count($violations) > 0) { throw new UnprocessableEntityHttpException('Inscription invalide.', new ValidationFailedException($inscription, $violations)); }
Depuis Symfony 8.2
if (\count($violations) > 0) { throw new ValidationFailedException($inscription, $violations); }
ValidationFailedException porte désormais #[WithHttpStatus(422)]. Symfony produit la même réponse qu'avec #[MapRequestPayload] : un JSON type, title, status, detail et violations, chaque violation avec son propertyPath.
À faire
Simplifiez InscriptionController : lancez directement la ValidationFailedException. Les deux requêtes de l'onglet « Requêtes » montrent la réponse.