Webform
🎯 Qu’est-ce que Webform ?
Section intitulée « 🎯 Qu’est-ce que Webform ? »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
📦 Installation
Section intitulée « 📦 Installation »# Installer Webformddev composer require drupal/webform
# Activerddev drush en webform webform_ui -yModules complémentaires
Section intitulée « Modules complémentaires »# Pour le développementddev drush en webform_devel -y
# Pour les exportsddev drush en webform_submission_export_import -y⚙️ Créer un formulaire
Section intitulée « ⚙️ Créer un formulaire »Structure → Webforms → Ajouter un webform
Ou : /admin/structure/webform/add
Formulaire de contact TailStore
Section intitulée « Formulaire de contact TailStore »-
Créer le webform
- Titre : Formulaire de contact
- ID machine : contact
-
Ajouter les éléments
Cliquez sur Construire puis Ajouter un élément :
Type Clé Libellé Requis Champ texte name Nom complet ✅ Email email Email ✅ Téléphone phone Téléphone ❌ Liste de sélection subject Sujet ✅ Zone de texte message Message ✅ -
Configurer le sujet
Options :
general: Question généraleorder: Suivi de commandereturn: Retour produitpartnership: Partenariat -
Enregistrer
📧 Configuration des emails
Section intitulée « 📧 Configuration des emails »Email de notification admin
Section intitulée « Email de notification admin »-
Allez dans Paramètres → Emails/Gestionnaires
-
Ajouter un gestionnaire → Email
-
Configuration :
Titre: Notification adminDestinataire: admin@tailstore.comSujet: "[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] -
Enregistrer
Email de confirmation client
Section intitulée « Email de confirmation client »Titre: Confirmation clientDestinataire: [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🎨 Personnalisation
Section intitulée « 🎨 Personnalisation »Ajouter des classes CSS
Section intitulée « Ajouter des classes CSS »Dans chaque élément :
# Attributs du wrapperwrapper_attributes: class: mb-4
# Attributs de l'élémentattributes: class: form-inputTemplate Twig personnalisé
Section intitulée « Template Twig personnalisé »{# 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>Styles des éléments
Section intitulée « Styles des éléments »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;}📋 Formulaire de demande de devis
Section intitulée « 📋 Formulaire de demande de devis »Structure
Section intitulée « Structure »É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 CGVConfiguration avancée
Section intitulée « Configuration avancée »# Produits - Entity autocompleteType: Référence d'entitéCible: Contenu - ProduitLimite de sélection: 5# Budget - SelectOptions: - Moins de 500€ - 500€ - 1000€ - 1000€ - 5000€ - Plus de 5000€📊 Gestion des soumissions
Section intitulée « 📊 Gestion des soumissions »Voir les soumissions
Section intitulée « Voir les soumissions »Structure → Webforms → [Formulaire] → Résultats
Exporter les données
Section intitulée « Exporter les données »- Résultats → Télécharger
- Choisir le format (CSV, Excel, JSON)
- Sélectionner les champs
- Télécharger
# Exporter en CSVddev drush webform:export contact --format=csv > contact.csv
# Exporter en JSONddev drush webform:export contact --format=json > contact.jsonNettoyer les anciennes soumissions
Section intitulée « Nettoyer les anciennes soumissions »Configuration → Webforms → Paramètres → Purge
Supprimer les soumissions après: 90 joursConserver les soumissions non lues: Oui🔌 Intégration dans le site
Section intitulée « 🔌 Intégration dans le site »- Structure → Mise en page des blocs
- Placer un bloc dans la région souhaitée
- Chercher Webform
- Sélectionner le formulaire
- Configurer la visibilité (pages)
Page dédiée
Section intitulée « Page dédiée »Le formulaire est accessible à : /form/contact
Personnaliser l’URL dans Paramètres → Paramètres généraux → Chemin
Dans un template Twig
Section intitulée « Dans un template Twig »{# Dans page.html.twig ou un bloc #}{{ drupal_entity('webform', 'contact') }}Dans un contenu
Section intitulée « Dans un contenu »Utilisez le format d’entrée “Full HTML” :
<drupal-entity data-entity-type="webform" data-entity-uuid="[UUID]"></drupal-entity>🔒 Anti-spam et sécurité
Section intitulée « 🔒 Anti-spam et sécurité »Honeypot (recommandé)
Section intitulée « Honeypot (recommandé) »ddev composer require drupal/honeypotddev drush en honeypot -yConfiguration : /admin/config/content/honeypot
Protéger tous les formulaires: OuiDélai minimum: 5 secondesNom du champ: url (ou autre nom piège)Avantages : Invisible pour l’utilisateur, très efficace contre les bots.
CAPTCHA / reCAPTCHA
Section intitulée « CAPTCHA / reCAPTCHA »ddev composer require drupal/captcha drupal/recaptchaddev drush en captcha recaptcha -yConfiguration :
- Créer des clés sur Google reCAPTCHA
- Configuration → CAPTCHA → reCAPTCHA
- Entrer les clés Site key et Secret key
- Choisir reCAPTCHA v3 (invisible) ou v2 (case à cocher)
Ajouter au webform :
- Élément → CAPTCHA
- Type : reCAPTCHA
Limite de soumissions
Section intitulée « Limite de soumissions »Dans Paramètres → Limites des soumissions :
# Par utilisateurLimite par utilisateur: 3Période: 1 jour
# GlobaleLimite totale: 100Période: 1 jour
Message: "Vous avez atteint la limite de soumissions. Réessayez demain."Validation des données
Section intitulée « Validation des données »Email :
Type: EmailValidation: Format email valide (automatique)Téléphone :
Type: TelMasque: "+33 X XX XX XX XX"Validation: Expression régulièreChamps obligatoires : Marquez toujours les champs critiques comme requis.
📊 RGPD et confidentialité
Section intitulée « 📊 RGPD et confidentialité »Consentement
Section intitulée « Consentement »Ajoutez un champ checkbox obligatoire :
Type: CheckboxClé: gdpr_consentLibellé: "J'accepte la politique de confidentialité"Requis: OuiDescription: "Vos données sont utilisées uniquement pour traiter votre demande. [Lien politique de confidentialité]"Conservation des données
Section intitulée « Conservation des données »Configuration → Webforms → Paramètres → Purge :
Supprimer les soumissions après: 90 joursConserver les soumissions non traitées: OuiEmail de notification avant suppression: contact@tailstore.comExport et suppression
Section intitulée « Export et suppression »Les utilisateurs ont le droit de :
- Accéder à leurs données (export CSV)
- Demander la suppression (bouton dans les résultats)
📱 Formulaire responsive
Section intitulée « 📱 Formulaire responsive »Configuration mobile
Section intitulée « Configuration mobile »# Paramètres d'affichageAfficher les étiquettes: Au-dessusLargeur par défaut: 100%Description position: Sous l'élémentMulti-étapes (Wizard)
Section intitulée « Multi-étapes (Wizard) »Pour les formulaires longs :
- Ajouter un élément Page wizard
- Déplacer les éléments dans chaque page
- Configurer les boutons Précédent/Suivant
🧪 Test et debug
Section intitulée « 🧪 Test et debug »Mode test
Section intitulée « Mode test »# Générer des soumissions testddev drush webform:generate contact 10Voir les logs
Section intitulée « Voir les logs »Rapports → Journaux récents → Filtrer par “webform”
Debug tokens
Section intitulée « Debug tokens »Dans l’email, affichez tous les tokens :
[webform_submission:values]📦 Exporter/Importer
Section intitulée « 📦 Exporter/Importer »Exporter la configuration
Section intitulée « Exporter la configuration »# Exporter un webformddev drush cex -y# Fichiers dans config/sync/webform.webform.contact.ymlImporter
Section intitulée « Importer »# Sur un autre environnementddev drush cim -y✅ Checklist
Section intitulée « ✅ Checklist »- 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é
🔜 Prochaine étape
Section intitulée « 🔜 Prochaine étape »Formulaires en place ! Découvrons les autres modules utiles.