Skip to content

Webform

This content is not available in your language yet.

Webform est le module de formulaires le plus complet de Drupal. Il permet de :

  • Créer des formulaires sans code
  • Gérer les soumissions
  • Envoyer des emails
  • Intégrer des paiements
  • Exporter les données
Fenêtre de terminal
# Installer Webform
ddev composer require drupal/webform
# Activer
ddev drush en webform webform_ui -y
Fenêtre de terminal
# Pour le développement
ddev drush en webform_devel -y
# Pour les exports
ddev drush en webform_submission_export_import -y

StructureWebformsAjouter un webform

Ou : /admin/structure/webform/add

  1. Créer le webform

    • Titre : Formulaire de contact
    • ID machine : contact
  2. Ajouter les éléments

    Cliquez sur Construire puis Ajouter un élément :

    TypeCléLibelléRequis
    Champ textenameNom complet
    EmailemailEmail
    TéléphonephoneTéléphone
    Liste de sélectionsubjectSujet
    Zone de textemessageMessage
  3. Configurer le sujet

    Options :

    general: Question générale
    order: Suivi de commande
    return: Retour produit
    partnership: Partenariat
  4. Enregistrer

  1. Allez dans ParamètresEmails/Gestionnaires

  2. Ajouter un gestionnaireEmail

  3. Configuration :

    Titre: Notification admin
    Destinataire: admin@tailstore.com
    Sujet: "[webform_submission:values:subject] - Nouveau message de [webform_submission:values:name]"
    Corps: |
    Nouveau message reçu sur TailStore:
    Nom: [webform_submission:values:name]
    Email: [webform_submission:values:email]
    Téléphone: [webform_submission:values:phone]
    Sujet: [webform_submission:values:subject]
    Message:
    [webform_submission:values:message]
  4. Enregistrer

Titre: Confirmation client
Destinataire: [webform_submission:values:email]
Sujet: "Votre message a bien été reçu - TailStore"
Corps: |
Bonjour [webform_submission:values:name],
Nous avons bien reçu votre message concernant "[webform_submission:values:subject]".
Notre équipe vous répondra dans les 48h.
Cordialement,
L'équipe TailStore

Dans chaque élément :

# Attributs du wrapper
wrapper_attributes:
class: mb-4
# Attributs de l'élément
attributes:
class: form-input
{# templates/webform/webform--contact.html.twig #}
<div class="bg-white rounded-lg shadow-md p-6 md:p-8">
<h2 class="text-2xl font-bold mb-6">{{ label }}</h2>
{{ content }}
</div>

Dans le thème, ciblez les classes Webform :

/* css/src/components/webform.css */
.webform-submission-form {
@apply space-y-4;
}
.webform-element--type-textfield input,
.webform-element--type-email input,
.webform-element--type-tel input {
@apply form-input;
}
.webform-element--type-textarea textarea {
@apply form-input min-h-32;
}
.webform-element--type-select select {
@apply form-input;
}
.webform-button--submit {
@apply btn btn-primary;
}
Éléments:
- fieldset: Informations personnelles
- name (text): Nom complet
- email (email): Email
- phone (tel): Téléphone
- company (text): Entreprise
- fieldset: Détails de la demande
- products (entity_autocomplete): Produits concernés
- quantity (number): Quantité estimée
- budget (select): Budget estimé
- deadline (date): Date souhaitée
- message (textarea): Détails supplémentaires
- terms (checkbox): J'accepte les CGV
# Produits - Entity autocomplete
Type: Référence d'entité
Cible: Contenu - Produit
Limite de sélection: 5
# Budget - Select
Options:
- Moins de 500€
- 500€ - 1000€
- 1000€ - 5000€
- Plus de 5000€

StructureWebforms[Formulaire]Résultats

  1. RésultatsTélécharger
  2. Choisir le format (CSV, Excel, JSON)
  3. Sélectionner les champs
  4. Télécharger

ConfigurationWebformsParamètresPurge

Supprimer les soumissions après: 90 jours
Conserver les soumissions non lues: Oui
  1. StructureMise en page des blocs
  2. Placer un bloc dans la région souhaitée
  3. Chercher Webform
  4. Sélectionner le formulaire
  5. Configurer la visibilité (pages)

Le formulaire est accessible à : /form/contact

Personnaliser l’URL dans ParamètresParamètres générauxChemin

{# Dans page.html.twig ou un bloc #}
{{ drupal_entity('webform', 'contact') }}

Utilisez le format d’entrée “Full HTML” :

<drupal-entity data-entity-type="webform" data-entity-uuid="[UUID]"></drupal-entity>
Fenêtre de terminal
ddev composer require drupal/honeypot
ddev drush en honeypot -y

Configuration : /admin/config/content/honeypot

Protéger tous les formulaires: Oui
Délai minimum: 5 secondes
Nom du champ: url (ou autre nom piège)

Avantages : Invisible pour l’utilisateur, très efficace contre les bots.

Fenêtre de terminal
ddev composer require drupal/captcha drupal/recaptcha
ddev drush en captcha recaptcha -y

Configuration :

  1. Créer des clés sur Google reCAPTCHA
  2. ConfigurationCAPTCHAreCAPTCHA
  3. Entrer les clés Site key et Secret key
  4. Choisir reCAPTCHA v3 (invisible) ou v2 (case à cocher)

Ajouter au webform :

  • Élément → CAPTCHA
  • Type : reCAPTCHA

Dans ParamètresLimites des soumissions :

# Par utilisateur
Limite par utilisateur: 3
Période: 1 jour
# Globale
Limite totale: 100
Période: 1 jour
Message: "Vous avez atteint la limite de soumissions. Réessayez demain."

Email :

Type: Email
Validation: Format email valide (automatique)

Téléphone :

Type: Tel
Masque: "+33 X XX XX XX XX"
Validation: Expression régulière

Champs obligatoires : Marquez toujours les champs critiques comme requis.

Ajoutez un champ checkbox obligatoire :

Type: Checkbox
Clé: gdpr_consent
Libellé: "J'accepte la politique de confidentialité"
Requis: Oui
Description: "Vos données sont utilisées uniquement pour traiter votre demande. [Lien politique de confidentialité]"

ConfigurationWebformsParamètresPurge :

Supprimer les soumissions après: 90 jours
Conserver les soumissions non traitées: Oui
Email de notification avant suppression: contact@tailstore.com

Les utilisateurs ont le droit de :

  • Accéder à leurs données (export CSV)
  • Demander la suppression (bouton dans les résultats)
# Paramètres d'affichage
Afficher les étiquettes: Au-dessus
Largeur par défaut: 100%
Description position: Sous l'élément

Pour les formulaires longs :

  1. Ajouter un élément Page wizard
  2. Déplacer les éléments dans chaque page
  3. Configurer les boutons Précédent/Suivant
Fenêtre de terminal
# Générer des soumissions test
ddev drush webform:generate contact 10

RapportsJournaux récents → Filtrer par “webform”

Dans l’email, affichez tous les tokens :

[webform_submission:values]
Fenêtre de terminal
# Exporter un webform
ddev drush cex -y
# Fichiers dans config/sync/webform.webform.contact.yml
Fenêtre de terminal
# Sur un autre environnement
ddev drush cim -y
  • Webform installé et activé
  • Formulaire de contact créé
  • Email notification admin configuré
  • Email confirmation client configuré
  • Anti-spam activé (Honeypot)
  • Formulaire intégré dans le site
  • Export configuré
  • Style personnalisé appliqué

Formulaires en place ! Découvrons les autres modules utiles.