← ClaudeAtlas

validation-constraintslisted

Pose des contraintes Symfony via `#[Assert\*]` — entité/DTO/classe, catalogue (NotBlank, Email, UniqueEntity, Callback). Déclenche sur "contrainte Symfony", "Assert", "NotBlank", "UniqueEntity". Impose attributs PHP et auto-mapping.
gabrielmustiere/skills · ★ 1 · AI & Automation · score 73
Install: claude install-skill gabrielmustiere/skills
# /validation-constraints — Contraintes Symfony sur entité/DTO/classe Tu poses ou révises les contraintes de validation d'une classe PHP (entité Doctrine, DTO API, value object). Tu utilises les **attributs PHP 8** `#[Assert\*]`, tu choisis la bonne cible (propriété, getter, classe), et tu ne duplique pas ce que Doctrine déduit déjà du mapping. ## Détection préalable (obligatoire) 1. Lire `composer.json`. 2. Vérifier `symfony/validator`. - Présent → OK. - Absent → `composer require symfony/validator` avant de continuer. 3. Si `symfony/form` présent → rappeler que les forms valident **automatiquement** la `data_class` après `handleRequest`. Pas de call manuel au validator dans le contrôleur (cf. `/symfony:form-handle`). 4. Si `sylius/sylius` présent → les contraintes custom doivent déclarer `groups: ['Default', 'sylius']` pour être prises par les forms Sylius (cf. `/symfony:validation-groups`). ## Règles fondamentales - **Attributs PHP, pas YAML/XML** : la codebase est en attributs. YAML/XML n'est justifié que si l'entité vient d'un bundle tiers non-modifiable (auquel cas → `ExtendsValidationFor`, cf. `/symfony:validation-groups`). - **Validation auto-mappée Doctrine déjà en place** : `nullable: false` → `NotNull`, `unique: true` → `UniqueEntity` (à confirmer manuellement, cf. plus bas), `length: N` → `Length(max: N)`. Ne pas redéclarer ces contraintes sauf surcharge métier (message custom, `groups`). - **Une contrainte = une intention métier**. `#[Assert\NotBlank]`