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 utilisateur
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_reponses |
Identifiant de la réponse à modifier | Entier |
no_ajax |
Désactiver l’ajax sur le formulaire | 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 |
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 par date d’activité
811 discussions
Bonjour,
J’ai un formulaire un peu complexe créé sous SPIP 3.1.
J’ai mis à jour en SPIP 3.2.1 SVN + tous les plugins en version SVN aussi.
J’ai voulu tester la v2 de Yaml et je suis tombé sur plusieurs bug, dont un qui semble vraiment propre à formidable/saisie puisqu’il se produit avec les v1 de Yaml.
Donc, sur http://dl.free.fr/h3Y8EY0Ss il y a un zip avec dedans formulaire-contact_default.yaml
À l’importation dans formidable (PHP 7.0.30 sous Windows), j’ai l’erreur suivante : Unable to parse string : Unable to parse line 1 ( id_formulaire : ’2’).
Une idée ? Une solution ?
Au temps pour moi, c’est la V2 de YAML qui crée un fichier .yaml proplématique : 2 espaces en plus à chaque début de ligne.
Avec http://dl.free.fr/gXHv1eavg exporté par la V1 (de YAML), l’importation (en V1) marche très bien.
Un peu de bruit pour rien.
Répondre à ce message
Bonjour,
Je rencontre un bug php avec le formulaire, uniquement avec les cases à cocher.
J’ai créé un formulaire avec de multiples champs (radio, case à cocher, bloc de texte, texte, liste déroulante), mais à la validation du formulaire il retourne toujours le message suivant et ne formate jamais le sujet du message envoyé par mal à l’aide des raccourcis.
Warning : Illegal offset type in isset or empty in (...)/plugins/auto/formidable/v3.7.2/traiter/email.php on line 124
Warning : Cannot modify header information - headers already sent by (output started at (...)/plugins/auto/formidable/v3.7.2/traiter/email.php:124) in (...)/ecrire/public/evaluer_page.php(51) : eval()’d code on line 20
J’ai masqué l’adresse de mon site.
J’ai remarqué en procédant par élimination que si je supprimais mes cases à cocher je n’avais plus ni ce message ni de problème de formatage du sujet du message.
Je tourne sous php 5.4.45 avec la version 3.7.2 SVN [109790] de formidable.
Une idée ? J’aimerai bien utiliser les cases à cocher, mais je n’ai pas de compétence en php pour débugguer.
Merci !
Bonjour,
c’est un warning, qui normalement ne devrait pas s’afficher sur un site en production, car il s’agit d’un niveau bas d’erreur. Il faudrait voir avec l’hébergeur à ne pas les afficher.
Cela étant, si tu as de telles notices, c’est qu’il y a un problème dans le code. Problème qu’on peut à priori résoudre.
Peux tu
1. Faire la mise à jour de formidable vers la toute dernière version, pour qu’on sache si on a toujours ce problème.
2. M’envoyer (monprenom@monprenom.net, sans le trema) un export yaml du formulaire qui pose problème que je puis reproduire ton bug en local.
Hello
Je rencontre le même souci (affichage du warning comme décrit plus haut).
Ce que j’ai pu observer, c’est que le warning apparaît lorsque le formulaire contient des cases à cocher ET qu’au moins une case est cochée.
J’ai testé sur 2 configs :
Bonne journée !
Sandrine
A oui, je comprend. La version 3.10.2 corrige cela.
Elle sera disponible bientôt.
Dans le cas de case à cocher, j’ai décidé de séparer les différentes valeurs par une virgule.
Répondre à ce message
Bonjour,
Je rencontre un problème avec mon formulaire Formidable.
Il est fonctionnel sur l’article dans la partie privé du site mais il n’apparait pas dans l’article quand je le publie.
Il est inséré dans un article comme ceci :
Je ne comprends pas car j’ai procédé de la même manière il y a quelques mois et je n’ai pas rencontré de problème :
http://parlemtv.fr/?Inscription-au-prochain-atelier-video-de-Parlem-TV
Depuis j’ai fait une mise à jour de quelques plugins... Le site tourne avec SPIP 3.0.24
Merci
Jluc
je vois bien le formulaire ....
En fait j’avais oublié de publier le formulaire en ligne. Par contre j’ai un problème d’affichage.
Dans la partie conception, et dans l’article visionné dans l’interface privée, mes phrases explicitant les choix sont bien placées à droite par contre dans l’article publique celles-ci sont à gauche et cela crée une surcharge...
http://parlemtv.fr/?Participez-a-l-aventure-Passeurs-d-images
ce sont des problèmes de css, pas lié directement au plugin en tant que tel, qui ne s’occupe pas de cet aspect.
Je n’ai pas compris ce que vous voulez dire par « mes phrases explicitant les choix sont bien placées à droite par contre dans l’article publique celles-ci sont à gauche et cela crée une surcharge ». Je vous suggère de demander de l’aide sur une la liste des utilisateur/trices de SPIP, où des gens pourront vous aider à adapter votre fichier perso.css
Répondre à ce message
Bonjour,
Quelqu’un pourrait-il m’expliquer étape par étape comment faire pour que formidable soit bien pris en compte par nospam ainsi que comment y inclure un captcha s’il vous plait ?
Le problème en l’état actuel des choses c’est que pour ce plugin je ne vois ni ou est la partie traitement du formulaire ni comment la modifier pour qu’elle prenne en compte nospam ou un captcha. à mes yeux le captcha reste tout de même une méthode valide et efficace pour protéger son formulaire contre les spams, je vous serai donc reconnaissant de m’expliquer si possible d’une part son inclusion dans le plugin formidable ainsi que l’inclusion de la partie traitement serveur (le nom du fichier à modifier, la fonction à modifier et le contenu à y inclure).
Je vous en remercie d’avance, cela fait plus d’une semaine que je me casse la tête sur ces spams et je ne vois vraiment pas quelle serait la solution ici pour que formidable prenne en compte un captcha et / ou nospam.
Bien cordialement,
Axel.
Formidable est déjà intégré dans NoSpam :
https://zone.spip.org/trac/spip-zone/browser/_plugins_/formidable/trunk/formidable_pipelines.php#L23
Quant aux captchas, les mainteneurs de ce plugin sont tous farouchement contre, et les devs de SPIP aussi. Je ne crois pas qu’il y ait grand monde qui ait envie de passer du temps à savoir comment les intégrer dans Formidable.
ça n’a pas empêché mon client d’avoir plus de 80000 messages provenant de robot. De ce fait un captcha me semblerait tout de même plus efficace et plus adapté pour bloquer ces derniers.
Avec NoSpam ? Tu devrais plutôt en parler sur le forum de ce plugin en expliquant tout, si c’est le cas.
Répondre à ce message
Bonjour, super plugin, merci.
Je souhaiterais personnaliser le contenu de l’email de l’accusé de réception. J’entends une personnalisation propre à l’email et non au message de réponse affiché sur le site.
C’est possible directement dans le fichier formulaire_accuse.html personnalisé sans avoir à bidouiller dans le plugin même ?
Je me réponds à moi-même. C’est déjà le cas ! Le template formulaire_accuse.html est bien le template de l’email. Je me trompé car il y avait une erreur dans le champs de destinataire de la confirmation et j’ai confondu avec le message envoyé en copie lors de la validation du formulaire.
Merci encore pour ce superbe plugin.
Super, c’est parfait :)
Et au passage tout est expliqué là dans la doc plus haut pour les emails.
Et comme expliqué, tu peux aussi personnaliser un template *par formulaire*, avec un squelette qui ajoute aussi l’identifiant textuel dans le nom du fichier.
Répondre à ce message
Bonjour, j’ai un problème de mis en place de formulaire avec Formidable. Je réussi bel et bien construire le formulaire, lui faire appel sur un article. Mais juste après le remplir et envoyer les réponses, il y a un message d’erreur et les questions apparaissent dans le système toutes sans réponses. Comment faire pour corriger ce problème ?
Amicalement
Il faudrait que tu donnes le message d’erreur pour pouvoir te répondre
Répondre à ce message
Mise en page
J’ai créé tous les champs mais la mise en page dans mon article est très moche.
Sur quelle page dois-je intervenir ?
https://www.essaillon-sederon.net/?Cotisation-ou-don-par-virement
Merci
Bah dans le thème de ton site, tes CSS, le plugin ne s’occupe que de l’aspect fonctionnel. Et d’ailleurs aucun rapport avec les formulaires de ce plugin en particulier, c’est « les formulaires » en général qui doivent être stylés correctement pour ton site public, n’importe quel formulaire.
Répondre à ce message
Javascript qui cafouille ?
Bonjour.
Je fais un formulaire avec des affichages conditionnels. Voir fichier YAML ci-joint (lien valable 7 jours).
Il y a un champ avec 8 boutons radio. Selon celui qui est coché, cela devrait afficher un des huit autres champs (appelons-les « champs conditionnels »).
Cela ne fonctionne pas. Les deux premiers champs conditionnels sont bien cachés mais les six autres sont là. Si je coche un des deux premiers radios, le champ correspondant ne s’affiche pas (sauf si je fais F5 !).
De plus, certains éléments Javascripts de mon site ne fonctionnent plus sur l’article où je place mon formulaire. Exemple : l’onglet « Relecture temporaire ». De même, dans l’espace privé, quand je modifie l’article ou l’enregistre, l’Ajax ne modifie pas la colonne de gauche. Aucun souci, par contre, si je supprime ces affichages conditionnels.
J’ai testé sur un autre site, c’est pareil. Avec deux navigateurs (Firefox et Vivaldi), c’est pareil. J’ai changé les clés des radios, pareil.
Est-ce moi qui ai foiré ma syntaxe ou y a-t-il un problème avec le Javascript généré ?
Si nécessaire, je peux envoyer une sauvegarde de la page html complète (et allégée) de l’article.
Merci d’avance.
1138.
Spip 3.1.8 ; Formidable 3.7.1 ; Saisies 2.24.2 ; API de vérification 1.7.1 ; Bonux 3.4.6.
Dans ton troisième champ conditionné (et j’imagine les suivants)
tu met
comme condition d’affichage, alors qu’il faudrait mettre
Bien vu ! C’était donc ma syntaxe (uniquement sur le 3e).
Merci et bon week-end. 👍
Bonjour
j’ai un souci identique.
J’ai une première question (@checkbox_3@) dont l’intitulé est : « vous »
et les réponses possibles
j’ai donc ensuite trois « groupes de champs », un pour chaque réponse... J’aimerais que le groupe de champs 1 soit visible quand on fait le choix1, le groupe de champs 2 ... quand on fiat le choix 2.
J’ai donc conditionné mes groupes de champs de la sorte
, formule que j’ai placé dans l’ongle ’affichage’ de mon groupe de champs à deux endroits : Affichage conditionnel et Affichage conditionnel lors du remplissage
Mais quand je vais sur la page qui présente le formulaire, https://www.infogm.org/evaluation-du-journal-bimestriel-inf-ogm, je vois d’emblée les trois groupes de champs...
Je ne vois pas où j’ai pu commettre une erreur, donc j’en appelle à vos lumières.
Merci
Christophe
Christophe, tu utilises informatiquement le label humain. La vraie valeur enregistrées, c’est la clé identifiante. Tu mets ce que tu veux, mais toi tu l’as toi même mis dans ton exemple, « choix1 », etc.
merci j’ai donc modifié ma formule mais les groupes de champs restent tous visibles, indépendamment du remplissage de la condition. J’ai vidé le cache et essayé en navigation privée, en vain.
Je me réponds : j’avais copié ma formule dans les deux champs : si_affichage et si_affichage_remplissage... donc ca marche
Par contre, je ne sais pas la valeur qui est renvoyé par un bouton « oui non » car si je mets
En fait je ne sais pas la valeur renvoyée par un tel champs.
Je me réponds : j’avais laissé la formule dans les deux champs si_affichage et si_affichage_remplissage
En virant la formule du deuxième, ça marche.
Merci
1. Les dernières versions de formidable/saisies suppriment ce double champs qui posaient problème.
2. Par défaut, oui/non renvoie :
- « on » si oui
- « » si non
Mais tu peux configurer cela. En fait, ce n’est pas vraiment une saisie conseillé, car non accessible. Il vaut mieux avoir des saisies explicites « Oui j’accepte telle condition » « non je refuse telle condition »
Je me réponds encore
la valeur est « on » sans majuscule... pour oui.. Désolé d’avoir encombré le forum.
Répondre à ce message
Bonjour et merci pour ce formidable plugin !
Je souhaite associer des formulaires à certains objets. Le problème un peu bloquant que je rencontre est que la liaison est supprimée dès qu’on modifie l’objet ?
- > formidable_post_edition($flux) dans formidable_pipelines.php
On peut apporter une modification à un objet sans souhaiter supprimer les liaisons ?
(exemple avec les mots-clés)
Merci d’avance pour votre retour
Je n’ai jamais rencontré ce problème.
Bonjour Maïeul,
Tu veux dire par là que lorsque tu associes un formulaire à un objet, la liaison n’est pas supprimée si tu modifies l’objet ?
exactement (autrement dit : je n’ai pas rencontré le problème que tu décris)
Bonjour,
Je reviens à la charge concernant le problème évoqué : quel que soit l’objet sur lequel je relie un formulaire, la liaison est supprimée dès que je modifie l’objet.
Si je commente la fonction formidable_post_edition() du fichier formidable_pipelines.php, le problème ne se produit plus.
A quoi sert ce pipeline ?
Je suis vraiment très ennuyée par ce problème, merci pour votre aide
C’est compliqué puisque je ne reproduis pas le problème. Il faudrait que tu puisse m’envoyer en privé une copie de la base + des plugins installé ainsi que les version PHP/mysql utilisés pour que je puisse essayer de debuguer.
Répondre à ce message
Salut,
est-ce quelqu’un à déjà été confronté à des disparitions de champs ?
Je rencontre ce bug mais je n’arrive pas à bien le cerner : je crée un nouveau formulaire dans lequel j’ajoute un champs bloc de texte par ex. Si je clique sur le bouton Configurer de ce bloc, il disparait (= il est supprimé du formulaire).
Le truc, c’est que ça ne le fait pas à chaque fois et je n’arrive pas bien à voir dans quelles conditions.
La config : SPIP 3.1 et Formidable et à jour.
Jamais eu ça pour l’instant. N’hésite pas à repréciser si tu trouves un moyen de reproduire à coup sûr (les bugs pas reproductibles, c’est forcément un peu compliqué de faire quoi que ce soit…)
Merci pour ton retour.
Oui, c’est pas pratique !
Je vais lancer un mail sur la liste pour voir...
Répondre à ce message
Ajouter un commentaire
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.
Suivre les commentaires : |