Fil d'Ariane
Drupal 10 : Les modes d'affichage et de saisie (View mode / Form mode / display mode)
Découvrez ce que sont les modes de saisie et les exemples d'usage.
Cet article a été initialement rédigé pour Drupal 8 mais son contenu est toujours d'actualité pour Drupal 9 et Drupal 10.
N'hésitez pas à nous contacter ou à vous inscrire à notre formation «Drupal pour les développeurs et développeuses» pour en savoir plus !
Nous l'avons vu dans notre article sur le rendu des entités, il est possible de passer un mode d'affichage (view mode) à nos render arrays. Il est possible d'en faire de même avec les modes de saisie (form modes).
Un mode d'affichage (view mode) est une représentation d’un groupe de champs. On en affiche certains, on en masque d’autres, on configure les formateurs des champs visibles.
Cette mécanique était utilisée uniquement pour afficher du contenu. Dans Drupal 8 a été introduit le même mécanisme pour l’appliquer aux formulaires via les modes de saisie (form modes).
Un exemple de mode de saisie (form mode) utilisé par le cœur est la gestion du profil utilisateur. Un utilisateur possède des champs. Lorsqu’il s’inscrit, nous ne voulons pas forcément collecter tous les champs disponibles. Un mode de saisie (form mode) Inscription permet de n’exposer que les champs qui nous intéressent et, si nécessaire, en utilisant des widgets différents de ceux utilisés dans l’édition du profil.
Le cœur ne se sert que très peu des modes de saisie (form modes) mais c’est un concept assez puissant. On pourrait par exemple s’en servir pour proposer une interface différente selon les rôles utilisateurs. Un relecteur pourrait ne modifier qu’un seul champ au sein du formulaire (les autres seraient en lecture seule).
Si vous voulez appeler un formulaire avec le mode de saisie (Form mode) de votre choix, voilà comment procéder au sein d’un contrôleur :
# Exemple : NodeController.php
public function add(NodeTypeInterface $node_type) {
$node = $this->entityManager()->getStorage('node')->create(array(
'type' => $node_type->id(),
));
// C'est au form builder que l'on passe le nom du form mode à charger.
$form = $this->entityFormBuilder()->getForm($node, '');
return $form;
}
Votre commentaire
À propos de Julien
Co-fondateur - Scrum master & Expert technique
Utilisateur de Drupal depuis 2008, j’ai fait mes armes comme développeur chez Commerce Guys puis me suis mis à encadrer les nouveaux arrivants avant de donner des formations, participer aux avant ventes et accompagner les équipes au passage à Scrum.
Je suis impliqué dans la communauté française de Drupal depuis 2009, j’ai été tour à tour président puis vice-président de l’association Drupal France et francophonie entre 2011 et 2013.