Cette documentation est valable à partir de la version 6.1.0 de Formidable.
Introduction
Historiquement, deux plugins avaient déjà été développés précédemment pour gérer des formulaires :
- Forms &Tables, qui n’a pas été complètement porté pour SPIP 2.
- et spip-formulaire créé par artego mais qui n’était plus maintenu.
La question s’est donc posée : construire sur la base d’un des deux plugins ou repartir de zéro ?
Form &Table, très complet pour les utilisateurs, présentait l’inconvénient d’avoir un côté “fourre-tout” qui le rendait difficilement modifiable et difficile à personnaliser par les dévs.
Il a finalement été décidé de repartir de zéro pour proposer quelque chose:
- de plus facile à utiliser pour les utilisateurs d’une part,
- mais aussi de plus facile à personnaliser pour les développeur⋅euses.
Avec le parti pris de se baser de préférence sur plusieurs petits plugins spécialisés et de tirer parti de la nouvelle norme CVT.
Interface utilisateurtrice
L’utilisation basique de l’interface est abordée dans ce screencast : Mon premier formulaire pas à pas : c’est Formidable !
Appeler mon formulaire
Vous devez appeler le formulaire ayant le nom “formidable”, en lui passant en paramètre l’identifiant de votre formulaire.
Dans un contenu
Utilisez le modèle <formulaire> classique : <formulaire|formidable|id=34> ou bien <formulaire|formidable|id=contact>
Dans un squelette
#FORMULAIRE_FORMIDABLE{34} ou bien #FORMULAIRE_FORMIDABLE{contact}
Afficher les résultats du formulaire
Dans un contenu
Utilisez le modèle <formulaire_analyse|id_formulaire=34>
Pré-remplir dynamiquement les champs d’un formulaire
À noter, vous avez la possibilité de surcharger dans l’appel, les valeurs par défaut des champs de votre formulaire. Pour cela, vous devez passer un tableau de nom=>valeur en deuxième paramètre. Vous pourrez trouver les noms de vos champs dans l’aide-mémoire situé sur la page de configuration des traitements.
Dans un contenu
Le tableau de valeurs dans un paramètre defaut sous forme d’une suite de chaînes “clé,valeur” séparée par des virgules :
<formulaire|formidable|id=contact|defaut=hidden1,valeur,input_5,autrevaleur>
Dans un squelette
Le tableau en deuxième paramètre :
#FORMULAIRE_FORMIDABLE{contact, #ARRAY{nom_du_champ, Ma valeur}}C’est particulièrement utile pour remplir un champ caché avec une valeur dynamique venant du squelette :
#FORMULAIRE_FORMIDABLE{contact, #ARRAY{hidden_1, #ID_DOCUMENT}}Autres options utilisable dans le squelette
Il est possible de passer des options comme troisième argument du formulaire, sous forme de tableau (#ARRAY).
| Nom de l’option | Fonction | Type |
|---|---|---|
forcer_modif |
Permet de forcer la modification d’une réponse, même si non autorisé | Booléen |
id_formulaires_reponse |
Identifiant de la réponse à modifier | Entier |
no_ajax |
Désactiver l’ajax sur le formulaire | Booléen |
traiter_enregistrement_desactiver_modif_instituer_prop |
Permet de désactiver au cas par cas l’option de configuration « Lorsque l’internaute modifie la réponse, son statut redevient « proposée » » | Booléen |
traiter_email_destinataires |
Destinataires pour le traitement | Tableau (#ARRAY) d’emails ou liste d’emails séparés par des virgules |
traiter_email_destinataires_methode |
Indique si traiter_email_destinataires doit remplacer les emails déjà configurés dans le traitement ou les ajouter |
Au choix 'remplacer' ou 'ajouter' (valeur par défaut) |
url_redirect |
Url de redirection | Chaine |
ignorer_limite_date |
Permet de ne pas tenir compte de la date de publication et de la date d’expiration (à priori usage purement interne à formidable | Booleen |
Exemple d’un formulaire Formidable dont l’identifiant est contact_libre et dont l’email destinataire est dans le champ email de la table de votre objet #EMAIL de la table spip_contacts ….
<div class="ajax">
#FORMULAIRE_FORMIDABLE{contact_libre,'',#ARRAY{traiter_email_destinataires,#EMAIL}}
</div>Case unique
Pour rendre obligatoire la réponse oui à une case unique (pour la validation de conditions d’utilisation par exemple), il faut simplement rendre le champ obligatoire.
Courriels de notification
Une option des traitements proposés permet d’envoyer un mail de notification automatiquement, à chaque saisie d’un formulaire.
Le squelette par défaut employé pour la mise en forme de ces mails est plugins/formidable/notifications/formulaire_email.html. Vous pouvez le copier dans le répertoire ’notifications’ de votre squelette et l’y modifier à votre guise. Cette modification vaudra pour tous les formulaires.
Pour utiliser un squelette spécifique pour les mails de notification de l’un seulement des formulaires définis avec Formidable, il suffit d’ajouter son squelette dans le répertoire ’notifications’ de votre dossier squelettes, mais en ajoutant l’identifiant.
IDENTIFIANT étant l’identifiant du formulaire défini dans Formidable, les squelettes doivent se nommer :formulaire_IDENTIFIANT_email.html pour le mail aux destinatairesformulaire_IDENTIFIANT_accuse.html pour l’accusé de réception du visiteur
Conservation des IP
Les adresse IP des personnes répondant aux formulaires sont stockées en base de donnée. Depuis la version 1.5 (SPIP 3) / 0.7 (SPIP < 3), elle sont automatiquement hashé, de manière à ce que l’IP ne soit plus reconnaissable, au bout de 124 jours (environ 4 mois).
Pour changer ce délai, vous pouvez redéfinir la constante _CNIL_PERIODE dans votre fichier mes_options.php.
Par exemple :
define('_CNIL_PERIODE', 24*3600);permet de hasher les IP toutes les 24 heures.
Si vous voulez désactiver le hashage, mettez la valeur à 0.
Envoi de fichiers
Lire l’article complémentaire : Envoyer des fichiers avec un formulaire Formidable.
Mise en forme des saisies
Le plugin ne prévoit aucun réglage de mise en forme des saisies : c’est à chaque squelette d’avoir ses styles. Il respecte cependant la convention d’écriture des formulaire SPIP. Il permet d’ajouter des classes spécifiques sur les saisies.
Affichage des réponses sous forme de tableau
Le plugin Formidable Tablesorter permet d’afficher sous forme de tableau les réponses, dans l’espace privé, avec possibilité de tri et de filtre.
Voir aussi sur le wiki
- Complément de doc et exemples sur les boucles et balises de formidable
- Exemples de stylage CSS d’un formulaire Formidable
- todoFormidable
- Formidable, présentation aux Grottes (2010)

Discussions by date of activity
850 discussions
bonjour,
des soucis avec la mise à jour formidable 7.3.5 que je viens de réinstaller.
Je joins l’erreur affichée ci dessous
Cré bon soir. Vous êtes la 5eme personne à avoir ce souci. Vous etes en mysql ou en sqlite ?
Allez dans la page de de maintenance du site et tentez une réparation de la base. Cela devrait résoudre je pense.
Yorait pas un soucis avec un truc bien déclaré quand c’est une installation neuf, mais qui se ferait pas (ou pas bien) quand c’est une mise à jour ?
Bah écoute j’ai fais les tests en local en maj avant de merger, nicod aussi et on a pas eu cela. Donc je sais pas ...
je suis en mysql et ça devient très très bizarre car j’ai le même site en anglais totalement autonome par rapport au site français avec les mêmes versions de plugins etc et sur ce dernier je n’ai pas ce message d’erreur quand je clique pour ouvrir le formulaire ... What that
désolée pour ce truc fugitif
il faudrait regarder le fichier
mysql.logdu site problematique, ainsi quemaj.logBon, je viens de retester et chez moi ca marche TM. Je soupconne vaguement ce bug
https://git.spip.net/spip/spip/-/issues/5986
ce qui voudrait dire qu’en pratique on ne peut pas utiliser les fonction d’API de spip pour mettre à jour facilement la base a partir de sa declaration, et qu’il faut insérer les colonnes “à la main” dans le code pour être sur que cela marche dans tous les cas.
alors là on va peut-être comprendre un peu mieux d’où ça vient et possiblement solutionner MON pb mais sans doute pas celui de la communauté ... car j’ai ce même site français de secours installé celui-là tout à fait sur un autre hébergement, avec toutes les mises à jours 4.4.9 et plugin formidable 7.3.5 qui lui non plus ne présente pas ce message d’erreur au clic sur l’URL du formulaire dans l’espace privé.
bah si on trouve d’où vien le pb chez toi, a priori la solution s’applique partout. Mais je ne vois vraiment pas.
quoi qu’il en soit, et comme je n’ai vraiment pas le courage de me pencher sure cela, tente la réparation de la base
ah et peut être comparwer les versions mysql entre les 2 hebergeurs
la solution est tout autre : et consisterait à tout résinstaller SPIP et les plugins de novo dans le répertoire actuel qui aurait été vidé au préalable, et de copier le dossier plugins de celui qui fonctionne. Pas marrant parce que sur celui-là je n’ai pas fait les mises à jour de contenu mais moindre mal ... autre solution “pour tout le monde”?
non cela ne solutionnerait rien du tout. Puisque le problème se situe au niveau de la base de donnée, pas des fichiers.
Donc je repete : tanter une reparation de la base de données. Et si cela ne suffit pas, créer les colonnes à la main (voir les echanges ci-dessous d’autres personnes avec le même problème)
oui je vais tenter une réparation de la base et si ça ne marche pas, j’utiliserai la base de données du site français qui fonctionne après avoir écrasé la base actuelle. Je vous tiens au courant. mais avant j’essaie de désinstaller formidable et de le réinstaller (je me demande si je ne l’ai pas déjà fait) j’avais seulement supprimé le plugin par ftp pour le remplacer par la version précédente qui fonctionne aussi avec 4.4 mais ça m’a été refusé. je risque de perdre mes formulaires mais je les ai sur le site qui fonctionne donc en yaml
Encore une fois si la réparation de la base ne marche pas, vous pouvezt utiliser phpmyadmin pour installer vous meme les tables...
Et avec ca aucun risque de perdre ses formulaires (surtout si vous faires une sauvegarde via phpmyadmin avant)
j’ai donc fait ce que j’ai dit parce que je pouvais récupérer les fichiers yaml de mes formulaires d’une part, et d’autre part parce que ces formulaires servent en saison, ils vont me permettre de créer ou de mettre à jour les formulaires saison 2025 pour la saison 2026.
Ainsi, j’ai bien entendu perdu les formulaires mais j’avais les yaml et j’ai perdu les stats afférentes dont je n’ai plus besoin.
Pour ceux qui ont ce problème : désinstaller le plugin formidable et l’installer de novo à l’aide du dispositif “ajouter un plugin” a résolu le problème.
inconvénient : perte des formulaires et des données d’utilisation
à vous de juger ... si vous avez ou non les yaml de vos formulaires et si ça vous ennuie ou non de perdre les données afférentes.
NB les autres “formidable” abonnement, participation, paiement que je n’avais pas désinstallés (ils s’étaient simplement désactivés quand j’ai désinstallé formidable) n’ont pâs bougé, je les ai simplement réactivés.
Et donc je vais mon point de mainteneur du plugijn :, il est INUTILE de desinstaller le plugin et donc perdre les données pour corriger ce bug (lié à SPIP visiblement). Mais simplement de créer à la main les colonnnes via par exemple adminer ou phpmyadmin.
merci Maïeul pour la bonne alternative.
La mienne me convenait avec mon habitude “ceinture et bretelles” et surtout vu mon peu de connaissances en Base de données, confiance totale en SPIP, j’ai développé des stratégies autres disons - j’en avais encore au moins une autre pour récupérer les données si elles n’avaient pas été sauvegardées - ce que nous faisons à chaque mise à jour de SPIP.
Merci merci pour ces échanges.
Reply to this message
Bonjour,
La dernière mise à jour 7.3.4 de Formidable semble n’avoir pas créé deux colonnes nécessaires sous SQL et plante l’interface privée lors de la tentative d’affichage des formulaires : ce problème est il unique sur mon installation ?
Amicalement.
Erreur SQL 1054
Unknown column ’date’ in ’field list’
SELECT date, date_expiration FROM spip_formulaires WHERE id_formulaire = 65
/var/www/alternc/c/.../www/plugins/auto/formidable/v7.3.4/formulaires/editer_formulaire_message_date.php formulaires_editer_formulaire_message_date_saisies() sql_fetsel(); 5
2 Erreur SQL 1054
Unknown column ’message_postexpiration’ in ’field list’
SELECT message_postexpiration FROM spip_formulaires WHERE id_formulaire = 65
/var/www/alternc/c/.../www/plugins/auto/formidable/v7.3.4/formulaires/editer_formulaire_message_date.php formulaires_editer_formulaire_message_date_saisies() sql_getfetsel(); 30
Toutes les mises à jour ont fonctionné chez moi.
Je vous invite
1. Dans un premier temps à repasser sur la page de gestion des plugins, pour le cas échéant reactiver la mise à jour
2. A défaut, tenter une mise à jour de la base.
J’ai eu le cas sur un site où je m’en suis sorti en écrivant dans la table spip_metas que la version de formidable base était 1.8.0.
Et retour dans la page de gestion des plugins où la mise à jour s’est correctement faite.
Mouais @realet c’était un mise à jour vers 7.3.4 ou bien vers une autre 7.3.z ?
faudrait comprendre pourquoi la maj ne s’est pas faite... (valable aussi poru Etienne, mais on peut dire qu’une fois c’est peut être pas de chance, 2 fois il y a sans doute un pb)
7.3.4 (git) depuis la version avant la 7.3.
étrange. Tu avais pas eu de message d’erreur sur ?exec=admin_plugin ? tu peux regarder dans les logs dès fois que ?
J’étais passé en spip-cli
Et j’ai eu pour certains sites (il s’agit d’une mutualisation) qu’un plugin ne pouvait pas s’activer parce qu’il manquait saisies ou vérifier (alors qu’ils sont dans plugins-dist).
maj.log :
Et dans mysql.log à la même heure (extrait) :
Mouais, je ne sais pas trop comment fonctionne spip-cli pour le coup. Trop fatigué pour chercher la cause.
Hello,
J’ai le même souci.
dans le log ce message de la dernière mise à jour du plugin. Il semblerait que c’est OK :
Mais j’ai des messages d’erreurs sur la page ecrire/?exec=formulaire&id_formulaire=1 :
«1 Erreur SQL 1054
Unknown column ’date’ in ’SELECT’
SELECT date, date_expiration FROM spip_formulaires WHERE id_formulaire = 1
/home/site/plugins/auto/formidable/v7.3.5/formulaires/editer_formulaire_message_date.php formulaires_editer_formulaire_message_date_saisies() sql_fetsel(); 5
2 Erreur SQL 1054
Unknown column ’message_postexpiration’ in ’SELECT’
SELECT message_postexpiration FROM spip_formulaires WHERE id_formulaire = 1
/home/lsite/plugins/auto/formidable/v7.3.5/formulaires/editer_formulaire_message_date.php formulaires_editer_formulaire_message_date_saisies() sql_getfetsel(); 30»
J’ai désactivé et réactivé le plugin sans succès.
Est-ce qu’il faut ajouter les colonnes manquantes à la main dans la base ?
Merci
Je me réponds :
j’ai corrigé en important la structure de la table spip_formulaires directement dans la base à partir d’un site pour qui la mise à jour du plugin avait fonctionné.
Les 2 sites sont sur le même serveur donc je ne sais pas pourquoi la MAJ n’a pas fonctionné pour tous les sites.
dd
C’est vraiment chelou que cela ne se créée pas. J’avoue ne pas savoir pourquoi.
Dans tous les cas dans ce genre de situation plutot que de creer à la main, une réparation de la base de donnée dans l’espace privé de SPIP permet de corriger les choses.
J’avais tenté la réparation aussi sans succès. :(
Sous Mysql ou sqlite ? quelle version de SPIP et de PHP ?
Oui, en ce qui me concerne j’avais dû créé les deux colonnes à la main pour débloquer (ALTER TABLE spip_formulaires
ADD date DATETIME DEFAULT NULL,
ADD date_expiration DATETIME DEFAULT NULL,
ADD message_postexpiration TEXT DEFAULT NULL;)
Par contre, après tous mes formulaires étaient désactivés, car il m’a fallu aussi cocher (ou décocher, je ne sais plus) l’attribut null de la colonne date_expiration pour qu’elle affiche une valeur par défaut à zéro ’0000-00-00 00:00:00’.
Amicalement.
Reply to this message
Bonjour,
Je tiens à signaler un paramètre qui m’a donné du fil à retordre pour que le prochain qui rencontre le souci ait la solution ;)
Avec Formidable, si le champ “Adresse email du ou de la webmestre” dans “Configuration” → “Identité du site” contient plus d’une adresse, alors les traitements par courriel ne fonctionnent pas.
Mais cela n’empêche pas les envois de mails par ailleurs.
Apparemment, il n’est désormais plus possible de saisir plusieurs adresses dans ce champ, mais ce n’était pas le cas autrefois et sur des sites “anciens” qui souhaitent utiliser Formidable, cela peut coincer.
Bonne journée.
Ah, merci, du coup il faudrait se demander si c’est une régression ou pas, vu que ça marchait pas le passé, et si oui peut-être faire un ticket de bug ? Mais le fait d’en mettre plusieurs ça crée un problème juste dans Formidable ou pour d’autres usages aussi ?
Concrètement ce champ sert à deux choses :
- à envoyer des notifications “pour webmaster” à ce ou ces destinataires, que ce soit le noyau ou des plugins, plusieurs fonctionnalités utilisent ce champ
- inversement, son contenu est utilisé pour être l’envoyeur (par défaut) cette fois, de plein de notifications envoyées là aussi par le noyau ou divers plugins
Sauf que ça n’existe pas d’avoir “plusieurs envoyeurs”, ça attend une seule adresse forcément pour ce cas d’utilisation là.
Est-ce qu’on doit quand même permettre d’en lister plusieurs à virgules, mais quand c’est pour le cas “envoyeur” c’est au code qui l’utilise de vérifier de prendre “que la première de la liste” ?
Bonjour,
Avec Formidable, je pense que cela n’a jamais marché.
Par contre l’envoi des mails tests fonctionnait parfaitement.
Ce qui ne m’a pas aidé dans ma recherche de solution.
Peu importe le choix du développement, mais l’idéal serait qu’il soit identique pour SPIP et tous les plugins.
Apparemment le cœur de SPIP ne permet plus d’en mettre plus d’une, donc cela résout le problème.
Il suffit que les personnes ayant fait le choix (quand c’était possible) d’en mettre plusieurs n’en gardent qu’une désormais.
Bonne journée.
Reply to this message
Bonjour
Je rencontre un problème avec le sélecteur d’articles. Dans la configuration il y a la possibilité de restreindre le choix à une branche (j’imagine qu’il s’agit de secteur ?).
Quand je précise un secteur dans la configuration, c’est bien bonne rubrique qui est indiquée, mais aucun article n’apparaît dans le sélecteur..
Je joins la copie d’écran avec et sans la limitation.
Est-ce que j’ai mal utilisé la fonctionnalité ?
Mon environnement
- php 8.3
- spip 4.4.7
- formidable 7.3.4
Bonjour,
pourriez vous envoyer un export yaml du formulaire en question ?
C’est un bug dans spip, je viens de soumettre une proposition de correction, à tester
https://git.spip.net/spip/prive/-/merge_requests/120
Merci ! Dites-moi quand je peux tester
Vous pouvez deja tester d’appliquer “à la main” le patch.
Reply to this message
Erreur lors de l’envoie des mails aux responsables du site.
Le log de spip remonte un problème avec la fonction
:Pub:!INFO: objet_inserer: appel avec type formulairesreponse invalide au lieu de formulaires_reponseL’on retrouve cet appel dans “Formidable v7.2.0” (traiter/enregistrement.php:70)
De mon côté, après changement du paramètre de “formulairesreponse” à “formulaires_reponse” cela est de nouveau fonctionnel.
Bonjour,
merci pour le message. Ce n’est pas vraiment une erreur, mais plus un avertissement. J’ai corrigé. Cela sera livré avec la prochaine version de formidable (date de sortie incertaine).
Penses tu que cela ai pu bloquer l’envoie des mails ?
L’appel ne génère pas d’erreur mais juste une info mais est elle bloquante pour la suite du/des scripts ?
Non, cela n’a aucun impact sur la suite du script. Et heureusement d’ailleurs, on s’en serait apercu plus tot.
Si tes maisl ne partent pas, regarde du côté des logs
mail.logetfacteur.logdeja.D’ailleurs ce message n’est pas lié à l’envoi de mail, mais bien à l’enregistrement en base (cf le fait que tu corrige
traiter/enregistrerReply to this message
Bonjour
J’aurais aimé ajouter des éléments au contenu du mail qui est envoyé aux responsables lors du traitement du formulaire, est-ce possible ? on peut modifier le sujet, le mail du réception, masquer des champs ... mais pas le contenu.
Pour celui que l’on renvoie à l’internaute, on peut ajouter un contenu mais pas pour les responsables.
Merci pour le retour !
Bonne journée,
Bonjour,
non effectivement ce n’est pas prévu. Je pense que la raison est que souvent les responsables sotn des “technicien•nes” et donc on est plus sec avec elleux qu’avec les internautes.
Cela étant cela ne serait pas très compliqué à intégrer. Pouvez vous ouvrir un ticket sur git.spip.net (suivre le lien en haut à droite de la présente page, si vous n’avez pas de compte cela peut prendre un peu de temps qu’1 admin valide). Cela permettra d’avoir aussi l’opinion d’autres personnes, et cela facilite le travail de suivi.
Reply to this message
Bonjour Maïeul
Je ne vois pas la possibilité de créer des boutons radios.
Cette option a disparu ou c’est moi qui doit consulter mon ophtalmo ?
Non c’est toujours possible. C’est meme la première possibilité dans la catégorie des “choix restreint”. Cf capture d’ecran,
Arf, moi je vois ça
Je précise que je suis avec spip 4.4.6 et Formidable 7.1.4
J’ai trouvé.
Bizarrement le fichier radio.yaml était devenu radio.php et inversement.
Heu... tu a fais des manipulations perso là dessus ?
Non, je ne sais pas ce qu’il s’est passé.
Reply to this message
Bonjour,
est il possible de faire apparaitre une image dans un formulaire, qui apparaitrait lorsque l’on sélectionne un champ input ?
Bonjour.
Non pas de possibilité de faire apparaître une image à la sélection d’un input. Par contre on peut insérer une images, via les modèles habituels de SPIP, dans un champ de type “commentaire”
Reply to this message
Bonjour,
Sur un site multilingue, est-il possible de traduire le formulaire dans chaque langue du site ?
Merci
Bonjour,
Oui en utilisant les blocs multilingues.
Reply to this message
Bonjour à tous !
J’ai installé SPIP 4.4.5. J’ai mis le plugin FORMIDABLE v7.1.3; J’ai aussi mis Saisies pour formulaires 5.16.1., Champs Extras 4.3.0 Champs Extras (Interface) 4.3.0.
Je suis bloqué lors de la création d’un formulaire ou de l’ajout d’un champ.extra lorsque je veux paramétré mes champs. J’ai le msg suivant qui apparait : Oups. Une erreur inattendue a empêché de soumettre le formulaire. Vous pouvez essayer à nouveau..
Pourquoi. Je suis bloqué sur les deux plugins.
Avez-vous une idée une solution j’ai terriblement besoin de ces plugins ??
Merci de votre aide.
Il y avait un bug avec saisies 5.16.1 ; saisies v5.16.2 corrige le souci. Donc mettez à jour dans les prochaines jeures le plugin et ca ira.
Grand merci à vous ! C’était la dernière partie de mon site à valider... ouf je termine
Reply to this message
Add a comment
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Follow the comments:
|
