Créez tous les formulaires dont votre site a besoin en faisant glisser des champs sur un canevas, sans code ni modification de template. Affichez ou masquez des champs selon les réponses du visiteur, recueillez des fichiers, et consultez chaque réponse dans une boîte de réception consultable que vous pouvez exporter en CSV.
Constructeur par glisser-déposer
Dix-neuf types de champs, réorganisation par glisser-déposer, configuration de chaque champ dans un panneau latéral, et aperçu du vrai formulaire avant publication.
Logique conditionnelle
Affichez ou masquez n’importe quel champ selon les réponses données aux autres. Les champs masqués ne sont jamais validés ni enregistrés.
Boîte de réception des soumissions
Recherchez, filtrez et marquez d’une étoile les réponses, marquez-les comme lues ou comme spam, parcourez-les comme une boîte de réception, et exportez la sélection courante en CSV.
Livraison partout
Envoyez un e-mail à votre équipe, répondez automatiquement au visiteur, et envoyez (POST) des données JSON signées vers n’importe quel point de terminaison, avec nouvelles tentatives et journal de livraison.
Cas d’utilisation
Formulaires de contact et de demande
Le cas classique, avec déjà intégrées les parties qui demandent habituellement un développeur.
- Posez une question complémentaire différente selon le type de demande.
- Répondez automatiquement au visiteur tout en notifiant en interne la bonne boîte de réception.
- Bloquez le spam grâce à un CAPTCHA, un champ piège caché et une limite de fréquence par visiteur.
Demandes de devis et briefs de projet
Des formulaires plus longs, où les questions dépendent de ce que le visiteur achète.
- Faites apparaître les questions sur le budget et le délai uniquement une fois un type de projet choisi.
- Acceptez un cahier des charges sous forme de fichier téléversé.
- Envoyez chaque brief directement dans votre CRM via un webhook.
Enquêtes et avis
Notes par étoiles, curseurs et choix multiples, avec une question complémentaire facultative.
- Demandez une adresse e-mail uniquement lorsque le répondant souhaite être recontacté.
- Regroupez les questions avec des titres, des blocs de texte et des séparateurs.
- Exportez les résultats en CSV et analysez-les dans un tableur.
Inscriptions, candidatures et adhésions
Tout formulaire qui recueille des données structurées et un document.
- Limitez un formulaire à une seule soumission par adresse e-mail.
- Fermez-le automatiquement à une date donnée, ou une fois un certain nombre de réponses atteint.
- Exigez que les visiteurs se connectent avant de pouvoir soumettre.
Prérequis
- Larapen CMS v1.0.0 ou ultérieur
- PHP 8.3+
- MySQL 8.0+
Installation
Étape 1 : Téléverser l’add-on
Dans le panneau d’administration, allez dans Admin → Extensions → Add-ons et cliquez sur le bouton Téléverser un add-on. Sélectionnez le fichier ZIP de l’add-on : le système l’extrait automatiquement et l’add-on apparaît dans la liste des add-ons installés.
Étape 2 : Activer l’add-on
Trouvez Form Builder dans la liste et cliquez sur Activer. Ses migrations et ses permissions sont mises en place automatiquement, et un formulaire Contactez-nous prêt à l’emploi est créé pour que vous ayez tout de suite quelque chose à examiner.
Étape 3 : Ouvrir le constructeur
Allez dans Admin → Formulaires → Tous les formulaires et cliquez sur un formulaire pour ouvrir le constructeur. Voir Démarrage rapide.
Code d’achat (clé de licence)
Form Builder est vendu comme un produit séparé, il possède donc son propre code d’achat (clé de licence), distinct du code d’achat de l’application principale et de celui de chaque autre add-on. Il vous est demandé lorsque vous activez Form Builder dans Panneau d’administration → Add-ons.
Nos produits sont vendus sur trois plateformes. La façon dont vous recevez un code d’achat dépend de l’endroit où vous avez acheté le produit.
| Plateforme / Marketplace | Comment obtenir le code d’achat | Où le retrouver |
|---|---|---|
| Boutique bedigit.com Achat sur le site (Shop) |
Généré automatiquement lorsque la commande est payée, puis envoyé par e-mail, soit dans un e-mail de licence dédié, soit dans l’e-mail de confirmation de commande. | Mon compte → Mes licences sur bedigit.com |
| Gumroad | Créé dès que Gumroad nous notifie la vente, puis envoyé dans un e-mail séparé, en plus du reçu Gumroad. | L’e-mail de licence, votre Bibliothèque Gumroad et Mon compte → Mes licences sur bedigit.com |
| Envato Market CodeCanyon |
Délivré par Envato, pas par nous, et jamais envoyé par e-mail : vous le téléchargez vous-même depuis votre compte Envato. | Compte Envato → Downloads → License certificate & purchase code |
1. Boutique bedigit.com (achat sur le site)
- Dès que le statut de paiement de la commande devient Payée, une clé de licence est générée automatiquement pour chaque article sous licence de la commande (une clé par unité achetée : acheter 3 unités donne 3 clés distinctes).
- Elle est envoyée par e-mail à l’adresse utilisée pour la commande, soit dans un e-mail de licence dédié, soit dans l’e-mail de confirmation de commande. Vérifiez votre boîte de réception et votre dossier spam / courrier indésirable.
- La clé reste disponible dans votre compte sous Mon compte → Mes licences. Les clés sont masquées dans la liste ; ouvrez la page de détail de la licence pour afficher et copier la clé complète, voir les domaines sur lesquels elle est activée, et désactiver un domaine pour libérer un emplacement d’activation.
- La facture correspondante se trouve sous Mon compte → Mes commandes.
2. Gumroad
- Un achat sur Gumroad produit deux e-mails distincts : le reçu Gumroad (envoyé par Gumroad, donnant accès aux fichiers) et un e-mail de clé de licence (envoyé par bedigit.com) qui contient votre code d’achat.
- L’e-mail de clé de licence est généré dès que Gumroad nous notifie la vente, il arrive donc normalement quelques secondes après le paiement. Ici aussi, vérifiez votre boîte de réception et votre dossier spam / courrier indésirable.
- Lorsque le produit Gumroad utilise la fonctionnalité de clés de licence propre à Gumroad, la même clé apparaît aussi dans votre reçu Gumroad et sous Bibliothèque dans votre compte Gumroad.
- La clé est également enregistrée sur votre compte bedigit.com, sous Mon compte → Mes licences.
3. Envato Market (CodeCanyon)
- Envato délivre lui-même le code d’achat. Nous ne l’envoyons jamais par e-mail, car nous ne le recevons pas.
- Récupérez-le depuis votre compte Envato : Downloads → trouvez l’article → License certificate & purchase code (la version texte comme la version PDF le contiennent).
- Il ressemble à
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
Démarrage rapide
Créer et publier un formulaire fonctionnel prend environ deux minutes.
- Allez dans Admin → Formulaires → Tous les formulaires et cliquez sur Nouveau formulaire.
- Donnez-lui un nom interne, visible de vous seul, et enregistrez. Vous arrivez directement dans le constructeur.
- Cliquez sur des types de champs dans la palette de gauche pour les ajouter, ou faites-les glisser sur le canevas.
- Cliquez sur un champ du canevas pour ouvrir ses paramètres à droite : libellé, obligatoire, largeur, validation, logique.
- Cliquez sur Enregistrer les modifications (ou appuyez sur Ctrl/Cmd + S).
- Cliquez sur Aperçu pour essayer le vrai formulaire, puis ouvrez Paramètres du formulaire pour choisir qui est notifié.
Votre formulaire est maintenant en ligne à l’adresse /forms/<slug>. Pour l’insérer plutôt dans une page existante, voir
Intégrer un formulaire.
Le constructeur
Le constructeur comporte trois volets : la palette de champs à gauche, le canevas au centre, et les paramètres du champ sélectionné à droite.
Ajouter et organiser les champs
- Ajouter un champ : cliquez dessus dans la palette pour l’ajouter à la fin, ou faites-le glisser à un emplacement précis du canevas.
- Réorganiser : faites glisser un champ par la poignée située sur son bord gauche.
- Dupliquer ou supprimer : utilisez les boutons qui apparaissent sur le champ lorsque vous le survolez ou le sélectionnez. Supprimer un champ supprime aussi toute règle de logique qui y faisait référence.
- Sélectionner : cliquez n’importe où sur un champ pour le charger dans le volet des paramètres.
Chaque champ du canevas affiche son type, son nom machine, sa largeur, ainsi que des badges pour Obligatoire, Logique et les champs masqués : vous lisez ainsi tout le formulaire d’un coup d’œil.
Paramètres du champ
Le volet des paramètres comporte trois onglets.
| Onglet | Contenu |
|---|---|
| Champ | Libellé, nom machine, texte indicatif, texte d’aide, valeur par défaut, choix, largeur, obligatoire, et si le champ est affiché ou non. |
| Règles | La validation propre à ce type de champ : longueur minimale et maximale, bornes numériques, plage de dates, lignes, types et tailles de fichiers acceptés, ou une expression régulière. |
| Logique | Affiche ou masque le champ selon d’autres réponses. Voir Logique conditionnelle. |
Le nom machine est la clé sous laquelle la réponse est enregistrée. Il apparaît comme en-tête de colonne dans l’export CSV, comme clé dans les données du webhook, et comme champ ciblé par les règles de logique. Il est généré à partir du libellé, et vous pouvez le modifier : le renommer met à jour toutes les règles de logique qui y faisaient référence.
Mise en page et largeurs
Chaque champ a une largeur, de sorte que deux ou trois champs peuvent partager une ligne : 1/1, 2/3, 1/2, 1/3 et 1/4. Sur téléphone, chaque champ occupe de toute façon toute la largeur.
Trois types de champs ne portent aucune réponse et servent uniquement à structurer le formulaire :
- Titre : un titre de section.
- Bloc de texte : un paragraphe d’explication.
- Séparateur : une ligne horizontale.
Types de champs
| Groupe | Type | Ce qu’il recueille |
|---|---|---|
| Texte | Ligne simple | Une réponse courte. Longueur minimale et maximale facultatives, et une expression régulière. |
| Paragraphe | Une réponse plus longue, avec un nombre de lignes configurable. | |
| Une adresse e-mail validée. Peut servir d’adresse de réponse et de destinataire de la réponse automatique. | ||
| Téléphone | Un numéro de téléphone, avec un modèle facultatif. | |
| Site web | Une URL validée. | |
| Nombre | Un nombre, avec minimum, maximum et pas facultatifs. | |
| Choix | Liste déroulante | Une valeur parmi une liste. |
| Boutons radio | Une valeur parmi une liste, toutes les options étant visibles. | |
| Cases à cocher | Plusieurs valeurs, avec un nombre minimal et maximal de sélections facultatif. | |
| Consentement | Une case unique pour une déclaration. Lorsqu’elle est obligatoire, elle doit réellement être cochée. | |
| Avancé | Date | Une date, avec des bornes minimale et maximale facultatives. |
| Heure | Une heure de la journée. | |
| Note | Une note par étoiles ; vous choisissez le nombre d’étoiles. | |
| Curseur | Une valeur sur une échelle, avec minimum, maximum et pas. | |
| Téléversement de fichier | Un ou plusieurs fichiers. Voir Fichiers téléversés. | |
| Caché | Une valeur fixe envoyée avec le formulaire mais jamais affichée. | |
| Mise en page | Titre | Rien : un titre de section. |
| Bloc de texte | Rien : un paragraphe d’explication. | |
| Séparateur | Rien : une ligne horizontale. |
Logique conditionnelle
Tout champ peut être affiché ou masqué selon ce que le visiteur a répondu ailleurs. Ouvrez l’onglet Logique du champ, activez N’afficher ce champ que dans certains cas, et ajoutez une ou plusieurs conditions.
Une règle se lit comme une phrase :
Show this field when all of these match:
[ Reason ] [ is ] [ support ]
- Afficher ou Masquer : ce qui se passe lorsque les conditions sont remplies.
- toutes ou au moins une : si chaque condition doit être remplie, ou une seule d’entre elles.
- Les conditions peuvent cibler n’importe quel autre champ qui porte une réponse. Les blocs de mise en page ne peuvent pas être testés.
Opérateurs
| Opérateur | Correspond lorsque le champ testé… |
|---|---|
| est | …est égal à la valeur. Pour les cases à cocher, lorsque la valeur fait partie des cases cochées. |
| n’est pas | …n’est pas égal à la valeur. |
| contient | …contient la valeur sous forme de texte. |
| ne contient pas | …ne contient pas la valeur sous forme de texte. |
| est supérieur à | …est numériquement plus grand. Pour les cases à cocher, lorsque plus de cases que ce nombre sont cochées. |
| est inférieur à | …est numériquement plus petit. |
| est vide | …n’a aucune réponse. |
| n’est pas vide | …a une réponse, quelle qu’elle soit. |
| est coché | …est une case de consentement cochée, ou un groupe de cases à cocher avec au moins une sélection. |
| n’est pas coché | …est une case de consentement non cochée, ou un groupe de cases à cocher vide. |
Les comparaisons ignorent la casse : une règle saisie comme support correspond donc aussi à une réponse enregistrée comme Support.
est vide, n’est pas vide, est coché et n’est pas coché ne testent rien d’autre : ils ne prennent donc pas de valeur.
Exemples
Poser une question complémentaire uniquement lorsqu’elle s’applique
Sur un formulaire de contact, demandez une référence de commande uniquement aux personnes qui choisissent le support technique :
Field: Order reference (required)
Logic: Show this field when all of these match:
Reason is support
Toute personne qui choisit un autre motif ne voit jamais ce champ, et le formulaire est envoyé sans lui.
Faire apparaître un champ lorsqu’une case est cochée
Sur un formulaire d’avis, ne demandez une adresse e-mail qu’aux personnes qui souhaitent une réponse :
Field: Where should we reply? (required)
Logic: Show this field when all of these match:
I would like someone to get back to me is checked
Gérer le cas “autre”
Field: Tell us what you have in mind (required)
Logic: Show this field when all of these match:
Project type is other
Conditions en chaîne
Les règles peuvent cibler des champs eux-mêmes conditionnels. Si le champ testé par une règle est masqué, il est considéré comme n’ayant aucune réponse, et le champ dépendant est donc masqué lui aussi. Vous pouvez enchaîner plusieurs niveaux sans rien configurer de particulier.
Paramètres du formulaire
Ouvrez un formulaire et cliquez sur Paramètres du formulaire. Les paramètres sont regroupés en six onglets.
Général
| Paramètre | Rôle |
|---|---|
| Nom interne | Le nom sous lequel le formulaire est listé dans l’administration. Les visiteurs ne le voient jamais. |
| Slug d’URL | L’adresse de la page publique, sous /forms/. Générée à partir du nom si elle est laissée vide. |
| Titre public et description | Affichés au-dessus du formulaire. Traduits par langue. |
| Libellé du bouton | Le texte du bouton d’envoi. |
| Après l’envoi | Afficher un message de remerciement, ou rediriger vers l’URL de votre choix. |
Comportement
| Paramètre | Rôle |
|---|---|
| Formulaire en ligne | Désactivé, met le formulaire hors ligne partout à la fois, y compris partout où il est intégré. |
| Lui donner une page publique | Désactivé, le formulaire n’existe que là où vous l’intégrez, sans page propre. |
| Exiger une connexion | Seuls les visiteurs connectés peuvent voir et envoyer le formulaire. |
| Une soumission par adresse e-mail | Bloque une deuxième soumission provenant d’une adresse déjà utilisée. |
| Nombre maximal de soumissions | Le formulaire se ferme de lui-même une fois ce nombre atteint. |
| Ouverture le / Fermeture le | Une période en dehors de laquelle le formulaire est fermé. |
| Message de fermeture | Ce que voit un visiteur lorsque le formulaire est fermé. Traduit par langue. |
| Enregistrer les soumissions | Désactivé, vous recevez toujours les e-mails et les webhooks sont toujours déclenchés, mais rien n’est conservé sur le serveur. |
| Enregistrer l’adresse IP | Désactivé, la colonne IP reste vide pour chaque nouvelle soumission. |
Les quatre autres onglets sont décrits dans Notifications par e-mail, Réponse automatique, Webhooks et Anti-spam.
Page publique
Sauf si vous désactivez Lui donner une page publique, chaque formulaire a sa propre adresse :
https://your-site.com/forms/contact-us
https://your-site.com/fr/forms/contact-us
La page utilise votre thème actif, possède son propre titre et sa propre description SEO (définis dans l’onglet SEO des paramètres du formulaire), et est disponible dans chaque langue dans laquelle le formulaire est traduit.
Intégrer un formulaire
Pour placer un formulaire dans une page existante (une page de contact, une landing page, un article de blog), collez son jeton d’intégration dans le contenu :
[form:contact-us]
Le jeton de chaque formulaire est affiché dans la colonne Jeton d’intégration de Admin → Formulaires → Tous les formulaires ; cliquez dessus pour le copier. Collez-le partout où du contenu se modifie ( une page, une section de texte enrichi, un article) : il est remplacé par le formulaire actif lorsque la page est affichée.
- Le formulaire fonctionne exactement comme sur sa propre page : validation, logique conditionnelle, téléversement de fichiers, CAPTCHA.
- Vous pouvez intégrer le même formulaire sur plusieurs pages ; chacune envoie ses soumissions indépendamment.
- Un jeton qui pointe vers un formulaire supprimé ou désactivé disparaît simplement : les visiteurs ne voient jamais le texte brut.
Les développeurs de thèmes peuvent aussi placer un formulaire directement dans un template :
<x-formbuilder-form slug="contact-us" />
<x-formbuilder-form slug="contact-us" :show-title="false" compact />
Ajouter à un menu
Pour placer un lien vers un formulaire dans votre en-tête ou votre pied de page, allez dans Admin → Menus, ouvrez le menu voulu,
ajoutez un élément de type URL personnalisée, et faites-le pointer vers l’adresse du formulaire
(par exemple /forms/contact-us). Le libellé est traduit par langue comme tout autre élément de menu.
Boîte de réception des soumissions
Admin → Formulaires → Soumissions liste tout ce que vos formulaires ont recueilli, les plus récentes en premier, avec quatre compteurs en haut : total, non lues, aujourd’hui et spam.
- Recherchez dans les réponses, vos notes internes et l’adresse IP.
- Filtrez par formulaire, par statut, par période, ou pour n’afficher que les entrées marquées d’une étoile.
- Marquez d’une étoile tout ce sur quoi vous voulez revenir.
- Sélectionnez-en plusieurs avec les cases à cocher pour changer leur statut ou les supprimer en une seule fois.
- Actualisez automatiquement la liste à intervalle régulier lorsque vous guettez de nouvelles entrées.
Cliquez sur une ligne pour l’ouvrir. La page de détail affiche chaque réponse en regard de sa question, les informations du visiteur (quand, d’où, dans quelle langue, avec quel navigateur), une zone de notes internes, et des flèches pour passer à la soumission suivante ou précédente sans revenir à la liste. Ouvrir une soumission non lue la marque comme lue.
Statuts
| Statut | Signification |
|---|---|
| Nouveau | Pas encore ouverte. Comptée dans le badge des non lues. |
| Lu | Ouverte par un membre de votre équipe. |
| Répondu | Vous avez répondu. À définir vous-même après avoir répondu. |
| Spam | Indésirable. Défini automatiquement lorsque les contrôles anti-spam interceptent une soumission. |
| Archivé | Traitée, conservée pour mémoire. |
Les soumissions supprimées vont dans la Corbeille, d’où elles peuvent être restaurées. Vider la corbeille les supprime définitivement, avec leurs fichiers téléversés.
Export CSV
Le bouton Exporter en CSV télécharge exactement ce que la liste affiche actuellement : le même formulaire, le même statut, la même période et la même recherche s’appliquent.
- Un filtre sur un seul formulaire donne une colonne par question, dans l’ordre où elles apparaissent sur le formulaire.
- Sans filtre de formulaire, toutes les réponses de chaque soumission sont regroupées dans une seule colonne, car deux formulaires différents n’ont aucune colonne en commun.
- Les choix sont exportés par leur libellé, et non par leur valeur enregistrée : le fichier se lit donc comme le formulaire.
- Le fichier s’ouvre correctement dans Excel, caractères accentués compris.
Fichiers téléversés
Les fichiers joints à une soumission apparaissent sur sa page de détail avec leur nom d’origine et leur taille ; cliquez sur l’un d’eux pour le télécharger.
Ce qu’un champ accepte (types de fichiers, taille maximale, nombre de fichiers) se règle champ par champ dans son onglet Règles, dans les limites globales du site définies dans Paramètres globaux. Un champ peut restreindre cette liste, jamais l’élargir.
Notifications par e-mail
Dans l’onglet Notifications des paramètres d’un formulaire :
| Paramètre | Rôle |
|---|---|
| M’envoyer les nouvelles soumissions par e-mail | Désactive la notification sans affecter la boîte de réception. |
| Destinataires | Une ou plusieurs adresses, séparées par des virgules. Laissez vide pour notifier plutôt tous les administrateurs. |
| Objet de la notification | Votre propre ligne d’objet. Utilisez {form} et {site} comme variables. |
| Champ de réponse | Le champ e-mail qui appartient au visiteur, afin que répondre à la notification lui parvienne directement. |
L’e-mail liste chaque réponse en regard de sa question et renvoie directement à la soumission dans le panneau d’administration. Les administrateurs peuvent aussi se désabonner individuellement sous Mon compte → Notifications, et l’ensemble du type de notification peut être désactivé pour tout le site dans les paramètres de notification principaux.
Réponse automatique
Une réponse automatique confirme au visiteur que son message est bien arrivé. Dans l’onglet Réponse automatique :
- Activez Envoyer une réponse automatique.
- Choisissez à quel champ e-mail elle est envoyée, ou laissez la détection automatique.
- Rédigez l’objet et le message. Tous deux sont traduits par langue, et le visiteur reçoit la langue qu’il a utilisée.
Le message peut reprendre ce qui a été envoyé. Écrivez le nom machine d’un champ entre accolades :
Hello {full_name},
Thank you for your quote request. Our team is reviewing your brief
and will send you a costed proposal within two business days.
{form} et {site} sont également disponibles. Les réponses sont adressées à la première adresse de votre liste de
Destinataires : un visiteur qui répond à la confirmation atteint donc une vraie boîte de réception.
Webhooks
Un webhook envoie chaque soumission directement vers un autre système (un CRM, un service de tableur, une plateforme d’automatisation, ou votre propre application) sous forme de requête POST JSON.
Dans l’onglet Webhook des paramètres d’un formulaire, activez Envoyer les soumissions à un webhook et collez l’URL du point de terminaison. Cliquez ensuite sur Envoyer un test : des données d’exemple partent immédiatement et le résultat s’affiche à l’écran, ce qui vous permet de configurer le côté réception avant même qu’un visiteur ne remplisse le formulaire.
Signature
Définissez un secret de signature et chaque requête portera une signature que votre point de terminaison pourra vérifier :
X-Larapen-Signature: sha256=<hmac of the raw body>
X-Larapen-Event: form.submission.created
X-Larapen-Form: contact-us
X-Larapen-Delivery: <unique id for this attempt>
Recalculez le HMAC du corps brut de la requête avec votre secret et comparez-le à l’en-tête. S’ils diffèrent, la requête ne provient pas de votre site, ou elle a été modifiée en chemin. La documentation développeur en donne un exemple complet.
Nouvelles tentatives et journal de livraison
Si le point de terminaison ne répond pas avec un code de succès, la livraison est automatiquement retentée après une minute, puis cinq, puis quinze. Chaque tentative est enregistrée sous Admin → Formulaires → Journal des webhooks, avec son statut, le code HTTP, sa durée, les données exactes envoyées et la réponse reçue.
- Ouvrez n’importe quelle entrée pour inspecter les données, et copiez-les pour tester votre point de terminaison.
- Utilisez Renvoyer pour rejouer une livraison échouée une fois le point de terminaison corrigé : cela renvoie exactement ce qui avait été envoyé à l’origine.
- Les anciennes entrées sont nettoyées automatiquement ; voir Confidentialité et conservation.
Anti-spam et CAPTCHA
Trois défenses s’exécutent sur chaque formulaire public, et elles se cumulent : un robot doit toutes les franchir.
1. Le piège caché
Chaque formulaire comporte un champ qu’aucun humain ne voit jamais, ainsi qu’un enregistrement signé du moment où la page a été affichée. Une soumission qui remplit le champ invisible, ou qui revient plus vite qu’une personne ne pourrait taper, est considérée comme automatisée.
2. Limitation de fréquence
Le nombre de soumissions acceptées d’un même visiteur par formulaire, et la période sur laquelle il est compté, se règlent dans Paramètres globaux. Les tentatives suivantes sont refusées avec un message indiquant au visiteur quand réessayer.
3. CAPTCHA
Form Builder utilise le fournisseur de CAPTCHA configuré dans Admin → Paramètres → Sécurité : le défi image auto-hébergé, reCAPTCHA, hCaptcha ou Turnstile. Activez-le pour l’ensemble des formulaires dans Paramètres globaux, et exemptez-en des formulaires individuellement dans leur onglet Comportement.
L’option auto-hébergée ne nécessite aucun compte tiers ni aucune requête externe, ce qui permet au formulaire de fonctionner sur les sites qui bloquent les services externes.
Multilingue
Les formulaires se traduisent à deux endroits, tous deux pilotés par un sélecteur de Langue.
Libellés des champs
Dans le constructeur, choisissez une langue dans l’en-tête et modifiez les libellés, textes indicatifs et textes d’aide pour cette langue. Enregistrez, puis changez de langue et passez à la suivante. Chaque langue est enregistrée séparément.
Paramètres du formulaire
Dans Paramètres du formulaire, un seul sélecteur de langue au-dessus des onglets gouverne tous les paramètres traduisibles à la fois : le titre et la description publics, le libellé du bouton, les messages de succès et de fermeture, la réponse automatique, ainsi que le titre et la description SEO. Changez de langue, remplissez, et enregistrez une seule fois.
Tout le reste (les libellés du panneau d’administration, les messages de validation, les boutons du formulaire public) est déjà traduit dans les langues fournies avec la plateforme. Le contenu non traduit se rabat sur votre langue par défaut : un formulaire partiellement traduit fonctionne donc quand même.
Confidentialité et conservation
Les formulaires recueillent souvent des données personnelles : l’add-on vous donne donc un contrôle direct sur ce qui est conservé et pendant combien de temps.
| Contrôle | Emplacement | Effet |
|---|---|---|
| Enregistrer les soumissions | Paramètres du formulaire → Comportement | Désactivé, la notification et le webhook partent toujours avec les données, mais rien n’est écrit dans votre base de données. |
| Enregistrer l’adresse IP | Paramètres du formulaire → Comportement | Désactivé, l’IP reste vide pour les nouvelles soumissions. |
| Supprimer les soumissions après | Paramètres globaux → Conservation | Les soumissions plus anciennes que ce délai sont supprimées automatiquement, avec leurs fichiers téléversés. 0 les conserve indéfiniment. |
| Supprimer les enregistrements de webhook après | Paramètres globaux → Conservation | Les entrées du journal de livraison plus anciennes que ce délai sont supprimées. 0 les conserve indéfiniment. |
| Champ de consentement | N’importe quel formulaire | Une case obligatoire qui enregistre l’accord du visiteur, stockée avec la soumission. |
La purge s’exécute une fois par jour avec le planificateur de votre site. Pour la lancer manuellement, ou pour voir ce qu’elle supprimerait sans rien effacer :
php artisan formbuilder:prune
php artisan formbuilder:prune --dry-run
Paramètres globaux
Admin → Formulaires → Paramètres regroupe les valeurs par défaut qui s’appliquent à tous les formulaires.
| Onglet | Paramètre | Défaut |
|---|---|---|
| Téléversements | Types de fichiers autorisés | pdf, doc, docx, xls, xlsx, csv, txt, zip, jpg, jpeg, png, gif, webp |
| Taille maximale de fichier | 5120 Ko par fichier | |
| Anti-spam | CAPTCHA sur les formulaires | Activé |
| Durée minimale de remplissage | 2 secondes | |
| Soumissions par IP | 5 | |
| Période | 10 minutes | |
| Conservation | Supprimer les soumissions après | 0 (conservation illimitée) |
| Supprimer les enregistrements de webhook après | 30 jours | |
| En-tête de page | L’apparence de l’en-tête des pages publiques des formulaires, qui remplace les paramètres d’en-tête de page de l’ensemble du site. | |
La limite de téléversement propre à votre serveur s’applique toujours en plus de la taille maximale de fichier : une valeur supérieure à ce que le serveur autorise ne prendra pas effet.
Permissions
L’add-on enregistre onze permissions, attribuables par rôle sous Admin → Utilisateurs → Rôles.
| Permission | Autorise |
|---|---|
formbuilder.forms.view | Voir la liste des formulaires et le constructeur. |
formbuilder.forms.create | Créer et dupliquer des formulaires. |
formbuilder.forms.edit | Modifier les formulaires et leurs champs, et envoyer des tests de webhook. |
formbuilder.forms.delete | Supprimer des formulaires et gérer la corbeille des formulaires. |
formbuilder.submissions.view | Lire les soumissions et télécharger leurs fichiers. |
formbuilder.submissions.edit | Changer le statut, marquer d’une étoile et rédiger des notes internes. |
formbuilder.submissions.delete | Supprimer des soumissions et gérer leur corbeille. |
formbuilder.submissions.export | Télécharger l’export CSV. |
formbuilder.webhooks.view | Consulter le journal de livraison des webhooks. |
formbuilder.settings.view | Ouvrir la page des paramètres globaux. |
formbuilder.settings.edit | Modifier les paramètres globaux. |
submissions.view, submissions.edit et
submissions.export. Ses membres peuvent traiter la boîte de réception sans pouvoir modifier les formulaires eux-mêmes.
Mise à jour
Il existe deux façons de mettre à jour cet add-on : via le panneau d’administration (recommandé) ou en remplaçant manuellement les fichiers.
Méthode 1 : Téléversement depuis le panneau d’administration (recommandé)
- Téléchargez le dernier fichier
.zipde cet add-on. - Allez dans Panneau d’administration → Add-ons et cliquez sur le bouton Téléverser.
- Sélectionnez ou faites glisser le fichier
.zipdans la zone de téléversement. - Une demande de confirmation affiche le numéro de la version actuelle et celui de la nouvelle version. Cliquez sur Remplacer pour continuer.
- Allez dans Panneau d’administration → Mise à jour du système (
/admin/update) pour appliquer les éventuelles migrations de base de données en attente.
Méthode 2 : Remplacement manuel des fichiers
Étape 1 : Remplacer les fichiers
Remplacez le dossier de l’add-on par la nouvelle version.
Étape 2 : Exécuter les migrations
php artisan migrate
Les migrations en attente ne s’exécutent qu’une fois : la commande peut donc être relancée sans risque.
Étape 3 : Vider les caches
php artisan config:clear
php artisan route:clear
php artisan view:clear
Étape 4 : Vérifier
Rendez-vous dans Admin → Formulaires → Tous les formulaires pour confirmer que l’add-on fonctionne correctement, et ouvrez l’un de vos formulaires sur le front-end pour vérifier qu’il s’envoie toujours.
Désinstallation
Éteindre un add-on sans rien perdre, c’est le désactiver : allez dans Panneau d’administration → Add-ons, trouvez Form Builder et cliquez sur Désactiver.
- Ses routes, ses vues, ses entrées de menu d’administration et ses permissions cessent d’être enregistrées, et ses pages publiques de formulaire ne répondent plus.
- Les jetons d’intégration ne sont plus remplacés :
[form:<slug>]dans une page ne produit donc simplement rien au lieu d’un formulaire. - Ses tables de base de données et toutes les données qu’elles contiennent sont conservées, vos formulaires et chaque soumission,
et ses fichiers restent dans
extensions/addons/formbuilder/. Rien n’est supprimé. - Le code d’achat enregistré lors de l’activation est conservé lui aussi : réactiver l’add-on ne le redemande pas.
- La désactivation est refusée tant qu’un autre add-on actif dépend de celui-ci : désactivez d’abord cet add-on.
Cliquez sur Activer sur la même carte pour le rallumer. Les migrations en attente sont rejouées, les assets republiés, et l’add-on reprend exactement là où il s’était arrêté.
Suppression
La suppression est définitive et détruit les données de l’add-on. Le bouton Supprimer n’apparaît que sur un add-on désactivé : la suppression se fait donc toujours en deux temps :
- Désactivez Form Builder (voir Désinstallation).
- Cliquez sur Supprimer sur sa carte et confirmez la demande.
Le panneau d’administration, en une seule passe :
- exécute le hook de désinstallation de l’add-on, s’il en fournit un, tant que son code est encore sur le disque ;
- révoque les permissions déclarées dans son
addon.json; - annule ses migrations (ce qui supprime ses tables de base de données et toutes les lignes qu’elles contiennent, y compris tous vos
formulaires et chaque soumission recueillie) et purge ses entrées de la table
migrations, afin qu’une réinstallation ultérieure reparte de zéro ; - supprime ses assets publiés :
public/addons/formbuilder/,public/vendor/formbuilder/etstorage/app/public/addons/formbuilder/; - supprime le dossier de l’add-on
extensions/addons/formbuilder/; - supprime sa ligne dans la table
addons(le code d’achat enregistré disparaît avec elle) et vide le cache de l’application.
La suppression est refusée, avec un message explicatif et avant toute destruction, lorsque l’add-on est encore actif, lorsqu’un autre add-on actif en dépend, ou lorsque l’utilisateur du serveur web (PHP) ne peut pas supprimer extensions/addons/formbuilder/. Dans ce dernier cas, donnez à cet utilisateur le droit d’écriture sur le dossier et sur son parent, puis réessayez.
Supprimer le dossier en FTP ou en SSH n’est pas équivalent : les tables de l’add-on, ses entrées dans la table migrations et sa ligne addons restent en place, et sa carte reste dans la liste. Utilisez plutôt Supprimer dans le panneau d’administration.
Dépannage
Le formulaire n’apparaît pas sur sa page
- Vérifiez que Formulaire en ligne est activé, dans Paramètres du formulaire → Comportement.
- Vérifiez que Lui donner une page publique est activé : lorsqu’il est désactivé, le formulaire n’existe que là où vous l’intégrez.
- Si Exiger une connexion est activé, la page n’est visible que par les visiteurs connectés.
- Assurez-vous que le formulaire comporte au moins un champ : un formulaire vide affiche un avis à la place.
Le jeton d’intégration s’affiche en texte au lieu d’un formulaire
- Vérifiez que le slug du jeton correspond exactement au formulaire, tirets compris :
[form:contact-us]. - Un formulaire inconnu ou désactivé fait disparaître entièrement le jeton ; si vous voyez le texte brut, c’est que l’add-on n’est pas actif. Vérifiez dans Panneau d’administration → Add-ons.
- Videz le cache de votre site après l’activation : Admin → Paramètres → Cache.
Un champ obligatoire bloque le formulaire alors qu’il est masqué
- Cela ne devrait pas arriver : un champ masqué n’est jamais validé. Si c’est le cas, vérifiez l’onglet Logique du champ : une règle qui cible un champ que vous avez depuis supprimé ou renommé peut ne plus correspondre.
- Ouvrez Aperçu dans le constructeur et parcourez le formulaire : il se comporte exactement comme la page publique.
Les soumissions arrivent mais aucun e-mail
- Vérifiez que M’envoyer les nouvelles soumissions par e-mail est activé, et que Destinataires contient une adresse valide (laissez vide pour notifier tous les administrateurs).
- Envoyez un e-mail de test depuis Admin → Paramètres → E-mail pour confirmer que le site peut envoyer des e-mails.
- Vérifiez que la notification n’est pas désactivée pour tout le site dans les paramètres de notification principaux, ni individuellement sous Mon compte → Notifications.
- Regardez dans le dossier de spam du destinataire.
De vraies soumissions sont marquées comme spam
- Réduisez ou désactivez la Durée minimale de remplissage sous Admin → Formulaires → Paramètres → Anti-spam. Un formulaire très court peut légitimement être rempli en deux ou trois secondes.
- Rien n’est perdu : filtrez la boîte de réception sur Spam et rétablissez le statut.
Un fichier téléversé est refusé
- Vérifiez que l’extension du fichier figure dans les Extensions acceptées du champ, ainsi que dans la liste des extensions autorisées pour tout le site sous Admin → Formulaires → Paramètres → Téléversements. Un champ peut restreindre cette liste, jamais l’élargir.
- Vérifiez la taille par rapport à la Taille max. du champ, et par rapport à la limite de téléversement de votre serveur, qui l’emporte toujours.
Le webhook ne se déclenche jamais
- Utilisez Envoyer un test dans l’onglet Webhook du formulaire : il affiche immédiatement la réponse du point de terminaison.
- Consultez Admin → Formulaires → Journal des webhooks pour voir les tentatives et les réponses reçues.
- Les livraisons sont mises en file d’attente : un site sans worker de file d’attente les envoie lors du prochain passage de la file. Vérifiez que votre worker tourne.
- Le point de terminaison doit être une URL absolue en
http://ouhttps://.
Un libellé traduit ne s’affiche pas
- Dans le constructeur, choisissez la langue dans le sélecteur de l’en-tête et vérifiez que le libellé est renseigné pour cette langue : chaque langue est enregistrée séparément.
- Enregistrez avant de changer de langue : le changement recharge le canevas.
- Les traductions vides se rabattent sur votre langue par défaut, ce qui est généralement le comportement souhaité.
Form Builder v1.0.0 : fait partie de la plateforme CMS Larapen.
© BeDigit. Tous droits réservés.