← ClaudeAtlas

validation-uselisted

Utilise `ValidatorInterface` Symfony hors form — DTO, payload JSON, `ConstraintViolationList`, 422 Problem Details. Déclenche sur "ValidatorInterface", "valider un DTO", "valider sans form". Impose service injecté.
gabrielmustiere/skills · ★ 1 · AI & Automation · score 73
Install: claude install-skill gabrielmustiere/skills
# /validation-use — Utiliser le Validator Symfony hors forms > **Utilise quand** tu appelles `ValidatorInterface` hors d'un Form (DTO API, payload JSON, CLI). > **Pas quand** tu ajoutes des contraintes sur une classe → `/symfony:validation-constraints`. > **Pas quand** tu organises des groupes ou validations conditionnelles → `/symfony:validation-groups`. Tu appelles directement `ValidatorInterface` depuis un contrôleur API, un service ou une commande. Tu renvoies une réponse HTTP bien formée (422 Problem Details côté API) et tu ne laisses jamais une `ConstraintViolationList` fuiter telle quelle. ## Détection préalable (obligatoire) 1. Lire `composer.json`. 2. Vérifier `symfony/validator`. 3. Si `api-platform/core` est présent → API Platform appelle le validator **automatiquement** lors du POST/PUT/PATCH sur une ressource. Pas d'appel manuel, on configure les groupes (`validationContext: ['groups' => [...]]`) dans les `#[ApiResource]` / `#[Put]`. Mentionner à l'utilisateur. 4. Si `symfony/form` est utilisé pour le flux → la validation est automatique après `handleRequest`. Ne **pas** réappeler `$validator->validate($entity)` (cf. `/symfony:form-handle`). 5. Si `symfony/serializer` présent et qu'on désérialise du JSON → combo serializer + validator est le pattern API sans form (détaillé plus bas). ## Règles fondamentales - **Service injecté via le constructeur**, pas `$this->get('validator')`. Typehint `ValidatorInterface`. - **`count($violations) > 0`** pour tester la p