Une plongée en profondeur dans le module de formulaire Web pour Drupal 8/9

Publié: 2021-10-12

Le module Webform est le générateur de formulaires et le gestionnaire de soumissions le plus puissant et le plus flexible pour Drupal. Il donne aux constructeurs de sites le pouvoir de créer facilement des formulaires complexes instantanément. Il est livré avec un certain niveau de paramètres par défaut, vous permettant également de le personnaliser selon vos besoins.

Consultez cet incroyable blog - Drupal 8 Webform Module - Un bref didacticiel pour vous aider à démarrer avec le module Webform sur votre site Drupal 8/9. Cela vous aidera à comprendre les bases facilement.

Le module Webform est livré avec de nombreuses fonctionnalités intéressantes et j'aimerais en mentionner quelques-unes ici.

Module de formulaire Web

Fonctionnalités du formulaire Web

1. Modification de la forme et des éléments

Tout formulaire, élément et ses paramètres associés peuvent être modifiés à l'aide de leurs crochets respectifs. Vous trouverez ci-dessous quelques crochets disponibles et vous pouvez en trouver plus dans le fichier webform.api.php :

  • Forme des crochets

hook_webform_submission_form_alter()
Effectuez des modifications avant qu'un formulaire de soumission de formulaire Web ne soit rendu.

  • Crochets d'élément

hook_webform_element_alter()
Modifier les éléments du formulaire Web.

  • Crochets en option

hook_webform_options_alter()
Modifier les options du formulaire Web.

  • Crochets de manutention

hook_webform_handler_invoke_alter()
Agir sur un gestionnaire de formulaire Web lorsqu'une méthode est invoquée.

  • plus de crochets…

hook_webform_access_rules_alter() etc.
◦ Modifier la liste des règles d'accès qui doivent être gérées par niveau de formulaire Web.

2. Source YAML

Le module Webform a commencé en tant que module de formulaire YAML, qui permettait aux utilisateurs de créer des formulaires en écrivant un balisage YAML. À un moment donné, le module de formulaire YAML a commencé à avoir une interface utilisateur et est devenu le module de formulaire Web pour Drupal 8.

  • YAML fournit un langage de balisage simple et facile à apprendre pour créer et éditer en masse les éléments d'un formulaire Web.
  • La page (Afficher) Source permet aux développeurs de modifier le tableau de rendu d'un formulaire Web à l'aide du balisage YAML. Les développeurs peuvent utiliser la page (Afficher) Source pour coder manuellement des formulaires Web afin de modifier rapidement les étiquettes d'un formulaire Web, couper-coller plusieurs éléments, réorganiser les éléments, ainsi qu'ajouter des propriétés personnalisées et un balisage aux éléments.
  • Voici un exemple de formulaire de contact et son code source YAML correspondant :

Formulaire de contact avec interface utilisateur glisser-déposer

Un formulaire de contact avec une interface utilisateur par glisser-déposer

Code source YAML

Le code source YAML du formulaire de contact

3. Champs conditionnels

Webform vous permet d'ajouter une logique conditionnelle à vos éléments dans votre formulaire. Considérons un petit exemple, dans lequel nous devons gérer de manière conditionnelle la visibilité des éléments en fonction de la valeur d'un autre élément dans le formulaire.

Voici un exemple de formulaire avec des champs en deux étapes, ÉTAPE 1 (élément Radios) avec les options « Email » et « Numéro de mobile ». ÉTAPE 2 (Fieldset) avec deux éléments, « Email » et « Numéro de mobile ».

Créer une page

Page de création de formulaire

Page d'affichage du formulaire

Page d'affichage du formulaire

Dans l'exemple ci-dessus, je voudrais afficher le champ 'Email' si l'option 'Email' est choisie à l'étape 1, sinon afficher le champ 'Numéro de mobile' si l'option 'Numéro de mobile' est choisie à l'étape 1.

Pour ce faire, modifiez votre champ « E-mail », cliquez sur l'onglet « Conditions », choisissez l'« État » comme « Visible » et définissez le « Déclencheur/Valeur » comme « ÉTAPE 1 La valeur [Radios] est un e-mail ». De même, suivez les mêmes étapes pour ajouter une logique conditionnelle à votre champ « Numéro de mobile » et définissez le « Trigger/Value » comme « STEP 1 [Radios] value is mobile_number ». Voici l'aspect final du formulaire Web :

Modifier l'élément de courrier électronique

Configuration de la logique conditionnelle

Étape 1

Formulaire lorsque 'Email' est choisi à l'ÉTAPE 1

Étape 2

Formulaire lorsque « Numéro de mobile » est choisi à l'ÉTAPE 1

4. Propriétés des options personnalisées

Webform vous permet d'ajouter des propriétés d'option personnalisées à vos éléments from.

Imaginez un scénario dans lequel vous voudriez gérer de manière conditionnelle les options d'un élément radio en fonction de la valeur d'un élément différent dans le formulaire. Comment feriez-vous cela?

Eh bien, je n'ai trouvé aucun moyen de le gérer via les paramètres de logique conditionnelle de l'interface utilisateur. Mais il existe une disposition pour définir des « propriétés d'options personnalisées » pour votre élément, dans laquelle vous écrivez la logique conditionnelle requise ciblant vos options dans l'élément à l'aide du code YAML.

Voici un exemple, où nous pouvons voir deux éléments radio et en fonction de l'option que je sélectionne dans le premier élément, la visibilité des options dans le deuxième élément devrait changer.

Page de création de formulaire

Page de création de formulaire

Option personnalisée

Page d'affichage du formulaire avant d'ajouter des propriétés d'options personnalisées :

  • Si 'Type A' est choisi, alors 'Option 1' et 'Option 2' devraient être visibles à partir du deuxième élément. De même, si 'Type B' est choisi, alors 'Option 3' et 'Option 4' devraient être visibles. Pour y parvenir, modifiez le deuxième élément, accédez à l'onglet "Avancé", faites défiler jusqu'aux sections "Options (personnalisées) propriétés" et écrivez la logique nécessaire en YAML.
Élément d'optionModifier l'élément d'option

Configuration des propriétés des options

Choisissez le type

Formulaire lorsque 'Type A' est choisi

Choisissez le type B

Formulaire lorsque 'Type B' est choisi

5. Gestionnaires d'e-mails de soumission de formulaires Web

  • Gestionnaires d'e-mails

Les gestionnaires de courrier électronique envoient une soumission de formulaire Web par courrier électronique. Pour ajouter des gestionnaires d'e-mails à votre formulaire Web, accédez à « Paramètres », puis à l'onglet « E-mails/Gestionnaires ». Ensuite, cliquez sur le bouton « Ajouter un e-mail / Ajouter un gestionnaire ».

Gestionnaire d'e-mails

Ajouter un gestionnaire d'e-mails

  • Comme le montre l'image ci-dessous, dans l'onglet « Général », ajoutez le « Titre » et définissez les détails « Envoyer à » et « Envoyer de ». Ajoutez le message « Sujet » et « Corps » selon les besoins et enregistrez le formulaire de configuration.
confirmation de l'émailGestionnaire de confirmationGestionnaire de confirmation par e-mailMessageDescription du titre

Et c'est à peu près tout. Votre gestionnaire est renvoyé chaque fois que le formulaire est soumis.

  • Vous pouvez également définir des gestionnaires d'e-mails conditionnels sur votre formulaire Web, c'est-à-dire déclencher différents gestionnaires d'e-mails en fonction de la valeur de certains éléments du formulaire.
  • Par exemple, considérons un élément 'Select' avec les valeurs 'Type 1' et 'Type 2'. Si l'utilisateur soumet 'Type 1', déclenchez le gestionnaire 'Email - Type 1' qui a défini l'adresse 'To' sur ' [email protected] '. Si l'utilisateur soumet 'Type 2', déclenchez le gestionnaire 'Email - Type 2' qui a défini l'adresse 'To' sur ' [email protected] '.
  • Pour ajouter une logique conditionnelle à votre gestionnaire d'e-mails, créez un gestionnaire et nommez-le « E-mail - Type 1 ». Définissez l'adresse « À » sur « [email protected] », passez à l'onglet « Conditions », choisissez l'« État » comme « Visible » et définissez le « Déclencheur/Valeur » comme « Sélectionnez le type [Sélectionner] la valeur est type_1 ».
  • De même, créez le deuxième gestionnaire et nommez-le « Email - Type 2 ». Définissez l'adresse 'To' sur ' [email protected] ', passez à l'onglet 'Conditions', choisissez 'State' comme 'Visible' et définissez 'Trigger/Value' comme 'Select Type [Select] value is type_2'.
Type d'e-mail

  • Gestionnaires d'e-mails programmés

    • Il étend le gestionnaire d'e-mails du module Webform pour permettre la planification des e-mails. Pour utiliser cette fonctionnalité, activez le sous-module 'Webform Scheduled Email Handler'.
    • Pour programmer l'envoi d'un e-mail des soumissions de formulaires, cliquez sur le bouton « Ajouter un gestionnaire ». Sélectionnez le gestionnaire « E-mail programmé » ici.
Sélectionnez le gestionnaire

Il n'y a qu'un seul paramètre de configuration supplémentaire dans le gestionnaire « E-mail programmé » par rapport au « gestionnaire d'e-mail » normal. Et c'est d'ajouter la date de l'e-mail de planification sous l'onglet Paramètres généraux.

Programmer le gestionnaire d'e-mails

Gestionnaire d'e-mails programmé

Définissez la date de déclenchement de votre gestionnaire et lorsque le prochain cron sera exécuté, votre e-mail sera envoyé !

Trouver de l'aide

Il existe différentes manières de demander de l'aide avec le module de formulaire Web. Voici une liste de quelques sources :

  • Documentation, livre de recettes et captures d'écran
    • https://www.drupal.org/docs/8/modules/webform
  • File d'attente des problèmes de formulaire Web
    • https://www.drupal.org/project/issues/webform
  • Réponses Drupal
    • http://drupal.stackexchange.com
  • Canal Slack
    • Vous pouvez toujours publier vos requêtes concernant le module Webform sur le canal #webform dans l'espace de travail Drupal slack. Tous les membres de la communauté, même les responsables du module eux-mêmes, sont toujours là et ont la gentillesse de vous guider dans vos problèmes.

Un GRAND bravo à Jacob Rockowitz pour son soutien indéfectible envers le module Drupal 8/9 Webform. Webform n'aurait pas été ce qu'il est maintenant sans lui.