En-tête (Header)
Utilisez l’en-tête pour afficher l’identité du site, les accès rapides et les outils principaux.
attention
Ce composant nécessite une licence Pro valide en production.
| Information | Valeur |
|---|---|
| Niveau | Pro |
| Composants Twig | dsfr:header, dsfr:header:brand, dsfr:header:tools |
Usage
- Utilisez
brandLabelpour le texte du bloc marque, par exempleGouvernement, et gardezsiteNamepour le nom du site. - Conservez la structure DSFR attendue pour éviter les erreurs JavaScript.
- Placez les outils dans
dsfr:header:tools.
Modes d'utilisation
- Exemple principal
- Composition
- Attributs HTML
En-tête · exemple principal
<twig:dsfr:header>
<twig:dsfr:header:brand siteName="info.gouv.fr" brandLabel="Gouvernement" serviceTitle="Tableau de bord" />
<twig:dsfr:header:tools :links="[
{label: 'Aide', href: '/aide', icon: 'fr-icon-question-line'}
]" />
</twig:dsfr:header>
Cette page expose aussi les sous-composants publics suivants : dsfr:header:brand, dsfr:header:tools. 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:header
id="en-tete-example"
class="fr-mt-2w"
data-controller="en-tete"
/>
API publique
| Composant | Rôle |
|---|---|
dsfr:header | Composant principal de cette page. |
dsfr:header:brand | Sous-composant public utilisable en composition Twig. |
dsfr:header:tools | Sous-composant public utilisable en composition Twig. |
Configuration
| Option | Type | Défaut / requis | Valeurs et usage |
|---|---|---|---|
siteName | string | "" | Nom du site. |
brandLabel | string|null | null | Texte du bloc marque. |
siteTagline | string|null | null | Baseline du site. |
serviceTitle / serviceTagline | string|null | null | Titre et baseline du service. |
homepageHref / homepageTitle | string | / / "" | Lien et titre du retour accueil. |
quickLinks | array|string | [] | Liens rapides { label, href, icon? }. |
operatorLogo | bool | false | Active la zone logo opérateur. |
operatorLogoSrc / operatorLogoAlt | string | "" | Source et alternative du logo opérateur. |
navId / menuModalId / menuBtnId | string | Valeurs par défaut | Identifiants de navigation et menu mobile. |
Guide d'intégration
| Question | Réponse |
|---|---|
| Famille DSFR | Mise en page |
| Quand l'utiliser | Quand vous composez une page, une zone transverse ou un bloc structurel réutilisable. |
| Quand éviter | Pour corriger un espacement local : utilisez d’abord les props et classes utilitaires DSFR prévues. |
| API publique | Utilisez uniquement les composants Twig listés sur cette page : dsfr:header, dsfr:header:brand, dsfr:header:tools. |
| Documentation DSFR | Consultez aussi la bibliothèque officielle : Système de Design de l'État. |
En-tête : composition avec 2 sous-composants
Variantes de en-tête
- en-tête avec attributs HTML pass-through pour
id,class,data-*etaria-*quand le template le permet.
Points de contrôle propres à ce composant
- Utilisez
brandLabelpour le texte du bloc marque, par exempleGouvernement, et gardezsiteNamepour le nom du site. - Conservez la structure DSFR attendue pour éviter les erreurs JavaScript.
- Placez les outils dans
dsfr:header:tools. - Testez la composition avec
dsfr:header:brand,dsfr:header:toolssans copier les templates internes. - Renseignez une alternative textuelle utile pour les images informatives et vide pour les images décoratives.
Accessibilité mise en page
- Le composant ne remplace pas les landmarks de votre page : gardez
main,nav,aside,sectioncôté application. - Les zones transverses doivent rester identifiables et cohérentes entre les pages.
- Vérifiez les ruptures responsive sur mobile, tablette et desktop.
Intégration Symfony/Twig pour dsfr:header
- Composez avec les sous-composants publics
dsfr:header:brand,dsfr:header:toolsquand le rendu doit être plus précis que les props. - Ajoutez vos attributs applicatifs (
data-controller,data-action,aria-*,class) surdsfr:headerquand ils concernent son nœud racine.
Checklist de recette
- rendu mobile sans débordement
- landmarks présents dans la page
- comportement thème clair/sombre si concerné
- 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. |
| Le composant rend en local mais pas en production | Vérifiez la licence avec php bin/console dsfr:license:validate. |