Formulaire (Form)
Utilisez les composants de formulaire avec les types Symfony Dsfr*Type ou avec les composants Twig unitaires.
attention
Ce composant nécessite une licence Pro valide en production.
| Information | Valeur |
|---|---|
| Niveau | Pro |
| Composants Twig | dsfr:fieldset, dsfr:fieldset:element |
Usage
- Le thème de formulaire DSFR est chargé par le bundle.
- Les fieldsets structurent les groupes de champs liés.
Modes d'utilisation
- Exemple principal
- Composition
- Attributs HTML
Formulaire · exemple principal
<twig:dsfr:fieldset legend="Coordonnées">
<twig:dsfr:fieldset:element>
<twig:dsfr:input id="lastname" name="lastname" label="Nom" />
</twig:dsfr:fieldset:element>
<twig:dsfr:fieldset:element>
<twig:dsfr:input id="firstname" name="firstname" label="Prénom" />
</twig:dsfr:fieldset:element>
</twig:dsfr:fieldset>
Cette page expose aussi les sous-composants publics suivants : dsfr:fieldset:element. Utilisez-les quand vous devez contrôler précisément la structure Twig au lieu de passer un tableau de données.
astuce
Préférez les sous-composants publics aux include, macros ou copies de templates internes. Cela garde votre code aligné avec les évolutions du bundle.
Ajoutez vos attributs applicatifs directement sur le composant quand ils concernent le nœud racine rendu par le template.
Attributs pass-through
<twig:dsfr:fieldset
id="formulaire-example"
class="fr-mt-2w"
data-controller="formulaire"
/>
API publique
| Composant | Rôle |
|---|---|
dsfr:fieldset | Composant principal de cette page. |
dsfr:fieldset:element | Sous-composant public utilisable en composition Twig. |
Configuration
| Option | Type | Défaut / requis | Valeurs et usage |
|---|---|---|---|
id | string | Selon composant | Identifiant HTML, normalisé et utilisé par aria-controls quand nécessaire. |
legend | string | Requis | Légende du groupe de champs. |
hint | string|null | null | Texte d’aide DSFR. |
error | string|null | null | Message d’erreur, active l’état erreur. |
valid | string|null | null | Message de validation, active l’état valide. |
disabled | bool | false | Désactive le contrôle. Accepte aussi 0/1 ou chaînes booléennes. |
inline | bool | false | Affiche les champs en ligne quand le contexte le permet. |
dsfr:fieldset:element | props | inline, inlineMd, grow, postal, number, year | Contraintes de mise en page d’un élément. |
Guide d'intégration
| Question | Réponse |
|---|---|
| Famille DSFR | Formulaire |
| Quand l'utiliser | Quand l’interface collecte, valide ou soumet une donnée utilisateur. |
| Quand éviter | Pour afficher une information non modifiable : préférez un composant de contenu ou de feedback. |
| API publique | Utilisez uniquement les composants Twig listés sur cette page : dsfr:fieldset, dsfr:fieldset:element. |
| Documentation DSFR | Consultez aussi la bibliothèque officielle : Système de Design de l'État. |
Formulaire : composition avec 1 sous-composant
Variantes de formulaire
- état désactivé avec
disabledquand l’action existe mais n’est pas disponible. - états de validation avec
erroretvalid, sans construire les classes à la main.
Points de contrôle propres à ce composant
- Le thème de formulaire DSFR est chargé par le bundle.
- Les fieldsets structurent les groupes de champs liés.
- Testez la composition avec
dsfr:fieldset:elementsans copier les templates internes. - Vérifiez les états erreur, succès et neutre avec les messages réellement liés au champ.
Accessibilité formulaire
- Chaque champ doit avoir un
label,legendou titre de groupe compréhensible. - Les aides et erreurs doivent rester reliées au champ avec les identifiants générés.
- Utilisez
required,disabled,erroretvalidpour refléter le vrai statut métier.
Intégration Symfony/Twig pour dsfr:fieldset
- Composez avec les sous-composants publics
dsfr:fieldset:elementquand le rendu doit être plus précis que les props. - Ajoutez vos attributs applicatifs (
data-controller,data-action,aria-*,class) surdsfr:fieldsetquand ils concernent son nœud racine. - Gardez des
idprévisibles pourdsfr:fieldset, surtout dans les listes ou formulaires répétés.
Checklist de recette
- label visible ou accessible
- message erreur lu par technologie d’assistance
- valeurs conservées après erreur de validation
- rendu vérifié en thème clair et sombre ;
- rendu vérifié sur mobile, tablette et desktop ;
- aucune erreur dans le profiler DSFR ni dans l'inspecteur d'accessibilité du navigateur.
Erreurs fréquentes
| Symptôme | Correction |
|---|---|
| Les classes DSFR semblent incomplètes | Utilisez les props du composant plutôt que des classes ajoutées à la main. |
| Un panneau, menu ou état actif ne fonctionne pas | Vérifiez que le JavaScript DSFR est chargé et que les identifiants HTML sont uniques. |
| Le composant rend en local mais pas en production | Vérifiez la licence avec php bin/console dsfr:license:validate. |