fix(catalog) : M6 — mapping inline des erreurs 422 du formulaire produit
Les operations Post/Patch de Product n'avaient pas collectDenormalizationErrors : un null/type invalide sur une relation (category) levait un 400 qui court-circuitait toute la validation -> aucune violation propertyPath, donc aucune erreur mappee sous les champs (ajout comme modification). - Product : collectDenormalizationErrors: true sur Post + Patch (miroir Client/Supplier/WeighingTicket) -> 422 avec propertyPath au lieu de 400. - useProductForm : on omet la cle 'category' du payload quand aucune categorie n'est choisie (envoyer null casserait la denormalisation IRI et masquerait les autres violations) -> le back renvoie les 6 violations d'un coup, dont le NotNull propre sur category.
This commit is contained in:
@@ -81,12 +81,18 @@ use function in_array;
|
||||
security: "is_granted('catalog.products.manage')",
|
||||
normalizationContext: ['groups' => ['product:read', 'product:item:read', 'category:read', 'site:read', 'storage_type:read', 'default:read']],
|
||||
denormalizationContext: ['groups' => ['product:write']],
|
||||
// Convertit les erreurs de denormalisation (type invalide / null sur une
|
||||
// relation : category, sites, storageTypes) en violations 422 portant un
|
||||
// propertyPath, au lieu d'un 400 qui court-circuite toute la validation
|
||||
// (cf. Client/Supplier/WeighingTicket — mapping inline useFormErrors).
|
||||
collectDenormalizationErrors: true,
|
||||
processor: ProductProcessor::class,
|
||||
),
|
||||
new Patch(
|
||||
security: "is_granted('catalog.products.manage')",
|
||||
normalizationContext: ['groups' => ['product:read', 'product:item:read', 'category:read', 'site:read', 'storage_type:read', 'default:read']],
|
||||
denormalizationContext: ['groups' => ['product:write']],
|
||||
collectDenormalizationErrors: true,
|
||||
provider: ProductProvider::class,
|
||||
processor: ProductProcessor::class,
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user