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
Eric dusurf constate que « Seules les réponses des interviewés ayant coché plus d’une case sont comptabilisés » et propose un fix dans
formidable/v3.5.6/saisies-analyses/checkbox.html
: https://contrib.spip.net/Balises-et-boucles-avec-Formidable#fixanalyseRépondre à ce message
Bonjour,
J’ai téléchargé formidable.
J’aimerais pouvoir faire d’une part un formulaire « à la doodle » pour demander qui viendra par exemple à un repas du club, et qu’on puisse voir, en ligne, qui est inscrit, et d’autre part dans le même formulaire, ou dans un autre, que chacun puisse préciser ce qu’il apportera à ce repas. Je ne sais pas comment m’y prendre pour que les infos restent en ligne pour que chacun les connaisse.
Par ailleurs, en attendant que le plugin « accès restreint » soit opérationnel pour spip 3.2... y a-t-il un moyen pour que ces formulaires ne soient accessibles qu’à ceux qui ont un code par exemple ?
Merci de votre aide.
Pour le « à la doodle » il faudrait faire un modèle qui fasse les requetes dans le résultat du formulaire. C’est un brin complexe mais pas impossible (malheureusement pas le temps de t’aider plus que cela).
Pour accès restreint, la version 3.15.10 est compatible SPIP 3.2
Bonjour Maïeul,
Merci, une fois de plus, pour la rapidité de ta réponse.
3.15.10 ? ah bon. la recherche automatique de plugin dans notre site ne le reconnaît pas comme tel. Je vais aller voir. Merci beaucoup.
Mais peut-être est-ce une version en test ou développement ce qui expliquerait qu’il ne figure pas ?
Elle était marqué en devellopement, je l’ai basculé en test. Tu dois pouvoir choisir de chercher parmi les en test.
Merci beaucoup. Nous l’avons téléchargé. Je vais aller faire un post à son sujet.
Répondre à ce message
Bonjour,
Il y a 2-3 petits trucs que je voudrais comprendre :
Dans la partie « Configurer le formulaire » il y a cette option :
Comment sont sélectionnés les champs qui apparaissent dans la liste ? Si je comprends bien, cela doit me permettre de vérifier la valeur unique d’un champ dans la base ? Est ce bien cela ?
Comment y insérer un champ que je voudrais unique ?
D’autre part, j’ai un formulaire que je représente après validation car c’est pour un enregistrement de garantie et je voudrais savoir si il y a une méthode pour vider les champs qui sont pré-remplis par les navigateurs. Peut-être en injectant des valeurs vides ?
Car dans la pratique, l’internaute revalide x fois le même formulaire, pensant l’avoir mal rempli , malgré le message de remerciement. Alors que le formulaire est représenté car il peut avoir plusieurs produits à garantir.
le dernier truc : Dans le paramétrage des champs textes, il y a cela :
La aussi je ne comprends pas comment cela fonctionne.
Merci
Bah ça permet par exemple de pas enregistrer une réponse si ya déjà l’email de la personne dans les réponses déjà stockées. Mais je ne vois pas ce que cette option fout là alors qu’elle est spécifique au traitement « enregistrer en base ». Raaah encore un bordel ajouté n’importe où… (option ajoutée ya 2 ans)
Je ne comprends pas la question « comment y insérer un champ », c’est la liste des champs de ton formulaire dedans.
Pour le reste, pour l’affichage vide, je ne sais pas, c’est peut-être un bug, vu qu’il y a rechargement ce n’est pas forcément le navigateur qui remplit ça, mais dans Formidable il y a une fonctionnalité pour remplir avec la dernière réponse de la même personne quand on trouve. Mais normalement ce n’est activé que suivant des options dans le traitement « enregistrer ». Du coup oui c’est peut-être un bug.
Bah ce serait bien que cela soit cela. En pratique, cela m’affiche les champs correspondants aux « Groupe de champs ». Donc ... bug certainement et effectivement au mauvais endroit car j’ai "découvert" cette option par hasard, en cherchant les options sur le remplissage des formulaires.
Répondre à ce message
Bonjour,
J’utilise Formidable version 3.5.3 (la mise à jour vers 3.5.4 ne fonctionne pas, mais ce n’est pas le propos).
Lorsqu’un formulaire est rempli, la base de donnée est bien peuplée, les mails envoyés contiennent toutes les variables.
Cependant, si le nombre des réponse est fourni pour chacun des formulaires, lorsque je veux voir les réponse dans l’espace privé, onglet formulaire, il n’y a aucune réponse.
Je ne sais pas quel est le fichier qui lit la BD et je n’arrive pas à comprendre pourquoi cela coince (tous les champs sont mentionnés « sans réponse »).
Pour ce site, c’est la version Spip est 3.1.7 [23768] + écran de sécurité 1.3.2 et le squelette sarkaspip version 3.4.7.
Merci par avance de vos suggestions.
Bonne journée ou bonne soirée
Ya tout tout dans la base de données donc, c’est uniquement un problème d’affichage ?
oui et non. Un problème de lecture de la base de données pour l’affichage avec la fonction fournie par le plugin pour lire la réponse d’une personne.
Je ne comprends pas, à un moment tu dis que tu ne vois aucun réponse (donc pas de liste des réponses ?) mais après tu dis que tu vas sur une réponse précise et que là tu ne vois aucun champ. Donc si tu peux aller sur une réponse précise, c’est bien que tu vois la liste (d’ailleurs la capture précédente montre bien la liste). Du coup c’est quoi précisément qui ne marche pas ? La liste ou la page d’une réponse précise ?
Bonjour,
C’est vrai que cela parait loufoque.
La liste des réponses est visible, mais lorsque je clique pour voir les réponses, il n’y a que des sans réponse, alors que :
- les réponses sont bien présentes dans la base de données (MySql)
- les réponses sont bien présentes dans le mail adressé aux personnes chargées de traiter les réponses.
PS : j’ai tardé à répondre, car je suis embarrassé par des champs obligatoires qui d’un coup ne sont plus valides dans le format alors qu’il l’était avant et je ne comprends ce qui a changé (téléphone avec contrôle du format du numéro de téléphone ou bouton oui/non ; par défaut non, maintenant il est obligatoire de changer en oui sinon cela ne passe pas !!!). Pour l’instant j’ai simplement supprimé certains contrôles, car comme la période est très active, il faut que cela passe, sinon je me fais trop taper sur les doigts).
Répondre à ce message
Bonsoir,
J’utilise ce plugin sur de nombreux sites et je ne mettais jamais penché sur le courriel de notification... formulaire_email.html et formulaire_accuse.html
Il reprend tous les champs du formulaire et les valeurs. Est-il possible de le modifier pour y insérer que certains champs et valeurs du moins présenter les valeurs individuellement car la il s’agit d’une reprise globale pour faire comme dans une newsletter.
Mon idée est la suivante : le formulaire sert pour acheter un bon cadeau. Je souhaiterai que celui qui achète le bon cadeau reçoive un mail de confirmation qui contiendrait certains champs et valeurs à des endroits précis (du type table avec image de fond ayant la forme d’un bon cadeau.
Merci d’avance pour votre retour si vous avez une idée pour cela.
Jérôme
Rien de simple en tout cas, le plugin sert avant tout à faire des questionnaires et sondages, les autres utilisations sont du détournement, si on veut. :p
En surchargeant le squelette on a l’environnement avec les valeurs, mais après il faut connaitre le nom des champs (input_1, etc) pour ensuite les afficher comme on voudrait.
Bonsoir RastaPopoulos et merci,
Admettons que je place le fichier formulaire_1_accuse.html (pour le formulaire 1) dans le dossier notifications de mon squelette et admettons que je connaisse le nom des champs : input1, ...
quelle forme cela doit avoir par exemple pour le champ 1 et sa valeur pour la faire apparaître car j ne connais pas l’environnement avec les valeurs...
Désolé d’abuser de ton temps..mais si tu peux soit me donner un exemple soit me dire ou en regarder un j’essayerai d’extrapoler pour le reste.
Merci d’avance
Jérôme
il me semble
#ENV{input_1}
tout simplementBonsoir RastaPopoulos,
Merci pour ton retour rapide...j’ai essayé d’inséré ton code j’ai m^me fait plusieurs essai mais sans succès.
J’ai modifié directement le fichier formulaire_accuse.html dans un premier temps pour être certain de voir les effets.
Et voici les essasi que j’ai fait dans l’espoir de voir apparaître les valeurs de mon deuxième champs
As-tu une idée où je suis boulet
Merci pour ton aide
Jérôme
Et donc c’est quoi le résultat de chacun de ses lignes ? Il n’y a rien dans
#ENV{input_2}
?Bonsoir,
Non aucune de ces lignes ne retourne un résultat visible.
Le résultat devrait être mon prénom « Jérôme » !!
Cordialement
Ah je suis allé voir, c’est marqué, toutes les valeurs sont ensemble dans
#ENV*{valeur}
donc#ENV*{valeurs/input_2}
RastaPopoulos... c’est parfait...cela fonctionne super.
Je pense que c’est intéressant à proposer pour configurer un retour du formulaire personnalisé vers l’expéditeur.
Je vais maintenant me mettre à la version finale de mon bon cadeau.
Merci du coup de main sérieux ...
Cordialement
Jérôme
Bonsoir RastaPopoulos,
J’ai terminé la mise en forme...si tu veux me donner ton adresse mail, je te fais un envoi pour que tu vois le résultat.
Par contre j’ai dû modifier le fichier formulaire_accuse.html directement dans le plugin car le fichier formulaire_1_accuse.html ne prenait pas le dessus dans le dossier notifications de squelettes.
Ce qui m’embête c’est que le squelette du mail va être envoyé pour tous les types de formulaires envoyés...
Est-ce que dans le dossier notifications du dossier squelettes il faut remettre le fichier formulaire_accuse.html par défaut pour que formulaire_1_accuse.html s’exprime ?
Merci encore pour ton aide
Jérôme
C’est le champ identifiant que tu dois mettre, tu l’as choisi toi-même.
Et cela marche parfaitement...j’avais qu’à mieux lire les explications car en effet c’était écrit... ce n’est pas le N0 du formulaire mais l’identifiant.
Merci encore RastaPopoulos
Cela marche nickel.
Bonne soirée
Répondre à ce message
Salut tout le monde !
J’ai une petite question :
Savez vous comment dans un squelette, je peux récupérer l’identifiant du formulaire utilisé par le rédacteur dans son article (dans le #TEXTE donc) ?
exemple :
Donc remplacer ici le =12… par quelque chose pouvant fonctionner dans tout les cas (pour une composition)
merci !
Je ferais plutôt un modèle à installer manuellement par le rédacteur de l’article.
Sinon je pense qu’un filtre maison appliqué sur #TEXTE* pourrait faire l’affaire.
Bé oui, enfin non, dans le squelette tu ne peux pas « proprement » connaitre ce que les gens mettent dans le texte des articles. Enfin on peut les scanner, mais c’est bancal. Genre dans ton squelette tu scannes #TEXTE* pour trouver
<formulaire|formidable|identifiant=XXX>
avec une expression rationnelle.Merci pour vous réponses, j’ai pas réussi avec les différentes solutions… mais je ne suis pas très avancé en prog.
La méthode avec scan en expression régulière me renvoie rien :
Et avec l’autre méthode du modèle…
J’ai réussi à voir les résultats du formulaire en surchargeant le fichiers forms.html du plugin… et en mettant ma boucle ici… mais impossible d’en faire un formsview.html par exemple pour que le rédacteur puisse l’appeller facilement depuis un article sans interférer déjà avec les formulaire existants du site…
aieaieaie ;)
J’ai l’impression que tu parles aussi d’un autre plugin qui n’est pas du tout Formidable
ah oui exact c’est form & tables… je vais voir comment migrer merci.
Répondre à ce message
Bonjour,
Nous avons fait évoluer un site en 3.0.26 + Forms&Tables en 3.2 avec Formidable, tous plugins à jour. Nous avons migré 2 gros formulaires avec plus de 1000 réponses sans problème apparent.
Tout semble fonctionner de façon correcte pour les formulaires migrés sauf pour le déplacement des champs dans le back-office ... on arrive à déplacer le champ (visuellement) mais quand on sauvegarde le formulaire, le champ est resté à sa place ... je ne vois pas d’erreur js dans la console ...
Par contre si on crée un nouveau formulaire, là le déplacement fonctionne ... donc j’imagine que la migration laisse une scorie quelconque qui casse cet aspect des choses ... une idée ?
Pierre
Aucune certitude mais j’ai une intuition que ça pourrait être parce qu’après migration il n’y a pas d’identifiant unique pour les saisies (id ou identifiant, je ne sais plus), alors que par l’interface ça les crée. Or pour le drag n drop, il faut absolument l’identifiant unique.
Du coup il faudrait corriger la fonction d’importation pour générer un identifiant à chaque fois pour les champs importés.
Pour essayer de regrouper une autre de mes réponses qui s’est retrouvée toute seule plus bas je la remet ici.
Finalement le pbm semble mineur car je me suis aperçu que l’on pouvait ordonner les champs en utilisant le menu déroulant au lieu du glissé-déposé et là ça marche. On n’a le souci que sur les formulaires importés, les nouveaux sont ok, le cas était spécial car très gros formulaires, des petits je les refaits rapidement, on n’a plus bcp de forms&tables, bref on va laisser comme ça !
Merci à ceux qui ont pris la peine de réfléchir et qui ont pointé du doigt le pbm !
Pierre.
Répondre à ce message
oui, il y a un bug plus qu’embetant sur les forum. Peut être lié au passage en 3.2.0 (mais je ne sais pas si c’est récent).
Par rapport à ton bug il faudrait unserialize le champ saisies, et vérifier si les saisies sont bien ordonnés de manière linéaire, sans saut dans les numéro.
Par exemple j’ai
Mais si la deuxième était en 2 peut être que cela aurait posé problème, à cause du trou. Et il se peut que la migration n’ai pas été correcte de ce point de vue.
Mais ce n’est qu’une hypothèse…
Répondre à ce message
Je réponds à mon propre message ... sauf que le formulaire de réponse ne s’ouvre plus sous ma question donc je ne suis pas sûr que ça apparaisse comme une réponse ... (bref il y a un bug dans le forum qui permet de signaler les bugs).
Si je déplace le champ non pas en faisant un glissé-déposé mais en utilisant le menu déroulant « placer après tel champ », là ça marche ...
Et là ça marche, le formulaire apparait sous ma réponse grrr... bref donc ce message était en réponse à celui dessous.
Répondre à ce message
Bonjour
j’ai installé ce formulaire qui est très pratique sur de nombreux sites internet.
j’ai malheureusement 3 sites internet qui sont spammés depuis ce formulaire.
Existe t’il un moyen de mettre un captcha ou autres techniques permettant de faire face à ces spams qui sont très nombreux
Merci par avance pour votre réponse.
Le captcha est une technique que dans globalement la communauté SPIP n’apprécie pas, car elle se fait au détriment des utilisateur·trice·s et de l’accessibilité.
Cependant le plugin antispam est connecté au plugin formidable et réduit considèrablement les spams, sans recourir au captcha
Bonjour et merci beaucoup pour votre rapide réponse.
Je comprends et partage tout à fait votre point de vue, mais là je suis confronté à une situation où nous recevons plus de 100 spams par jour et il faut vraiment une solution.
Quand vous dites que le plugin antispam est connecté, cela se fait il dès l’installation du plugin formidable ou faut il l’installer par la suite.
Avez vous une idée de ce que nous pourrions mettre en place pour éviter ces spams
Tout d’abord, est-ce que tu as le plugin Antispam activé bien partout ?
Merci pour RastaPopoulos pour votre réponse
non justemment, en réaction à votre réponse je recherche sur cette page https://contrib.spip.net/Protections-antispams quel est le plugin à installer ?
Merci
Aha ! Le plugin s’appelle nospam et pas antispam…
hehe.
C’est donc le plugin NoSPAM
Pour information : le plugin nospam est un plugin indépendant de formidable qui peut se « brancher » sur plusieurs formulaires (forum, formidable, etc). Il est déjà configuré pour marcher de concert avec formidable-
Merci beaucoup pour votre aide
Je vais installer et tester cela et vous tiens au courant
J’ai une dernière question, comment supprimer définitivement les réponses du formulaire formidable car après avoir demandé à supprimer toutes les réponses, elles basculent effectivement en statut supprimés mais elle reste dans le système.
Bonne journée
Comme pour tous les objets supprimés/à la poubelle dans SPIP, un cron les efface à intervalle régulier (si ce n’est pas le cas, c’est soit qu’il y a un bug sur formidable - mais j’ai vérifié cela il n’y a pas longtemps - soit un bug sur votre site).
Mais le plugin « corbeille » permet de gérer une vraie corbeille.
Merci beaucoup pour l’information concernant « no spam » ca fonctionne
Bravo
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 : |