← ClaudeAtlas

form-typelisted

Conçoit une classe FormType Symfony — AbstractType, buildForm, configureOptions, types de champs (ChoiceType, EntityType…). Déclenche sur "créer FormType", "buildForm", "data_class", "EntityType". Impose make:form.
gabrielmustiere/skills · ★ 1 · API & Backend · score 73
Install: claude install-skill gabrielmustiere/skills
# /form-type — Conception d'un FormType Symfony Tu conçois ou complètes une classe FormType (`src/Form/…Type.php`). Tu t'appuies sur `make:form`, tu choisis les bons types de champ, tu passes par `configureOptions` pour toute variante, et tu n'écris **jamais** un form inline dans un contrôleur. ## Détection préalable (obligatoire) 1. Lire `composer.json`. 2. Vérifier `symfony/framework-bundle` **et** `symfony/form`. - Présents → OK. - `symfony/form` absent → `composer require symfony/form` avant de continuer. - Stack non-Symfony → demander : *« Ce skill cible Symfony, je ne trouve pas les paquets attendus. On continue quand même ? »* 3. Si `sylius/sylius` présent → les forms Sylius héritent de `AbstractResourceType` et utilisent les groupes de validation `Default` + `sylius`. Détails dans `references/stacks/sylius.md` du plugin workflow. ## Règles fondamentales - **`make:form` d'abord** : `symfony console make:form <Nom>Type <Entité>` génère le squelette mappé sur l'entité. Pas d'écriture manuelle complète. - **Un FormType = un cas d'usage métier**. `ProductCreateType` et `ProductEditType` peuvent diverger (champs différents, validation différente) — ne pas forcer la réutilisation avec des options `mode=creation|edit` qui rendent le type illisible. Si 80 % des champs sont communs, extraire un parent via `getParent()`. - **`data_class` toujours** sur un form mappé à une entité. Sans ça, Symfony ne peut pas deviner les types ni appliquer la validation de l'entité.