Makina Blog
Les formulaires en Drupal 8
Présentation des modules disponibles pour construire des formulaires en Drupal 8.
Une fonctionnalité couramment demandée dans les projets ou dans nos formations est la création de formulaires. Si l'API est toujours disponible pour les développeurs, il faut aussi connaître les différentes possibilités offertes aux constructeurs de site Drupal 8. Et aujourd'hui… elles sont nombreuses et des modules comme YAML Form permettent d'aller vraiment très loin.
Webform
Impossible de parler de gestion des formulaires en Drupal sans citer Webform, la solution standard depuis de nombreuses versions. Une couverture fonctionnelle parfaite, une ergonomie bien pensée, un éco-sytème de modules permettant de tout faire (de l'affichage de résultats sous forme graphique à la connexion automatique avec des CRMs). En gros, le choix idéal et le standard de fait en Drupal 7. Mais…
Le port Drupal 8 n'arrivera peut-être jamais (ou du moins est en grosse discussion). Dès lors, plusieurs solutions s'offrent à nous.
Le cœur…
Le module Contact
Aujourd'hui, la communauté s'est concentrée sur l'ajout de champ sur les formulaires de contact, permettant d'assurer le minimum de fonctionnalité de création de formulaires en Drupal 8. C'est un bon début.
Les "Form Modes"
Mais ce n'est pas la seule fonctionnalité disponible dans le cœur Drupal liée aux formulaires. En effet, la création des "form modes" permet d'utiliser des formulaires différents pour la création des mêmes données. Il manque actuellement la possibilité d'utiliser ces formulaires… en bloc, pour les positionner de façon facile dans les différents écrans du site, ou selon les rôles des utilisateurs, par exemple.
Ces fonctionnalités sont en cours de développement dans la communauté et les modules : Form Mode Control / Form Mode Manager / EntityForm Block, …
Contact Storage
Reste qu'avec uniquement le cœur Drupal 8, on manque un peu de fonctionnalités, pas forcément pour la création pure et simple des formulaires, mais vraiment pour leur pleine exploitation (notamment l'intégration dans d'autres contenus). C'est là que la communauté vient encore une fois suppléer le cœur, avec notamment le module Contact Storage, qui ajoute au cœur le formateur de champ "Entité Rendue" pour les formulaires de contact référencés, permettant de les insérer au sein de n'importe quel contenu.
Je vous invite à consulter le très bon article de Flocon de Toile décrivant l'utilisation ce module pour injecter votre formulaire dans un contenu.
Le stockage des soumissions de formulaires est un plus non négligeable d'ailleurs ; en combinant ce module et le module CSV Serialization, on obtient même un export possible des soumissions en CSV. Ici, on approche du cœur des fonctionnalités du module Webform.
D'ailleurs, toutes ces fonctionnalités sont tellement utiles… qu'elles vont probablement être intégrées dans le cœur (voir le ticket correspondant).
YAML Form
Mais certains nostalgiques considèrent qu'un vrai module de formulaires doit également permettre la gestion multipage, les conditions sur les champs, la barre de progression, des gestionnaires de courriels plus poussés … Et un membre de la communauté a du coup développé le module YAML Form :
En bonus, pour les développeurs, il permet le développement de formulaires sous forme de fichier yaml et supporte la copie / réutilisation de formulaires. Bref, c'est mon nouveau module préféré !
Dream Fields
Il subsiste toujours un manque aujourd'hui, une fois intégré les fonctionnalités précédentes : l'ergonomie (gérée auparavant par le module Form Builder) ! Mais on compte tout de même aujourd'hui quelques propositions et notamment 1 tentative :
- Le module Dream Fields, qui essaie de modifier l'interface de création de champs dans les entités Drupal (et donc des formulaires de contact) :
- Et ce module a produit une proposition alternative, dans le cœur, de refonte complète de cette même interface, dont l'objectif de publication est la version 8.2.x : Refonte de la FieldUI, avec notamment une très intéressante création centrée sur le widget (qui pourra éventuellement être étendue par Plugin dans des modules contrib) :
Comme toujours dans Drupal, il faut donc suivre ce qui se passe dans la communauté pour identifier les meilleures propositions, mais dans la mesure où le besoin est courant, la communauté se mobilise et on devrait donc d'ici quelques mois (à nouveau cette idée que la "vraie" version 8 sera la version 8.2…) converger vers une solution générique et reconnue par tous. C'est aussi le rôle d'un développeur Drupal d'anticiper les évolutions de la communauté.
Actualités en lien
Migration d'un site Drupal 7 en Drupal 11
Trucs, astuces et "bouts" de code pour migrer votre site web de Drupal 7 à Drupal 11. Compte-rendu d'une conférence donnée au Drupalcamp Rennes 2024.
Makina Corpus, partenaire du DrupalCamp 2024
Nous sommes fiers d’annoncer que Makina Corpus est le sponsor du DrupalCamp à Rennes. Notre expert vous y propose une conférence « migrer de Drupal 7 à Drupal 10 ».