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é
812 discussions
Bonjour,
J’ai construit avec Formidable un formulaire d’adhésion pour une association. Cependant, je rencontre deux difficultés :
- j’ai créé 6 groupes de champs et activé la gestion multi-étapes dans la configuration des options globales ; mais, à l’affichage des étapes, la numérotation commence à 2, puis 4... pour 13 étapes au total ;
- je souhaite qu’un champ ne s’affiche que si la case du précédent est cochée ; j’ai donc saisi, dans l’affichage conditionnel, @checkbox_2@==« oui » mais, lorsque je valide la case, le champ suivant reste caché.
D’autre part, les réponses au formulaire sont envoyée par courriel au trésorier de l’association. Comme il y a beaucoup de champs, ce courriel a plusieurs pages. Je souhaiterais donc que les réponses soient sur la même ligne que les questions. Sur quel fichier agir ?
Merci pour votre aide
Cordialement
SPIP 3.2.12 + Sarka-SPIP 4.5.11
Formidable 4.15.4
Saisies pour formulaires 3.54.10
PHP 7.4.8
1. Pour le premier problème, il faudrait m’envoyer à monprenom@monprenom.net un export .yaml du formulaire
2. Pour une case cochée, la valeur prise est ’on’, pas ’oui’. Mais vous pouvez simplement mettre
@checkbox
, ca marchera tout aussi bien3. Dans le fichier
mes_options.php
, mettredefine('_SAISIES_AFFICHAGE_COMPACT', true);
Merci pour votre réponse rapide.
Je vous envoie le fichier .yaml
Cordialement
Pour le premier problème, c’est un bug qui a été signalé hier soir et corrigé ce matin :p. C’est parce que votre dernière explication se trouve hors groupe de champs.
Deux solutions :
- vous la mettez dans un groupe de champs
- vous utiliser la version v3 de dev (je ne vais pas releaser tout de suite, j’ai d’autres projets), qui est disponible ici https://git.spip.net/spip-contrib-extensions/saisies/archive/v3.zip, mais attention dans ce cas le champ se retrouvera dans toutes les étapes.
Merci pour la réponse rapide et pour le conseil concernant la mention « obligatoire ».
Cordialement
Répondre à ce message
Bonjour
Avec un spip 3.2.12 et formidable 4.15.4, après soumission d’un formulaire, le message de retour ne s’affiche pas du tout. Les valeurs saisies s’affichent bien, elles sont bien enregistrées en base, mais pas du tout mon message de retour.
Auriez-vous une idée d’où pourrait venir le problème ?
Le site est multilingue, mais j’ai le même résultat avec un message de retour avec ou sans la balise multi.
Voilà le code yaml du formulaire :
ET le code HTML produit pour afficher la réponse
Je ne reproduis pas...
Répondre à ce message
Hello,
J’ai hérité d’un poste informatique dans un collège qui utilise un spip plutôt daté.
Je n’ai pas le droit d’y toucher de peur que cela perde leur base de donnée ou certaines informations auxquelles ils tiennent (sic)
J’ai du mettre en ligne un article pour des préinscriptions qui utilise un formulaire qu’ils copient et réutilisent d’une année sur l’autre.
En prévisualisation de l’article via le mode administrateur, le formulaire est là, il marche (j’ai fait un test d’inscription concluant) ; pourtant sur le site public, l’article, les images et pdf s’affichent, mais le formulaire lui, ne marche pas.
A sa place j’ai le message d’erreur suivant :
J’ai réactivé et enlevé des options, créé un nouveau formulaire test pour vérifier la compatibilité, rien n’y fait. Le nom du formulaire test remplace celui de la « section_sport_2022etc... »
Est-ce qu’il y aurait quelque chose que je n’arrive pas à capter dans l’inclusion du formulaire ? (les anciens formulaires n’apparaissent plus non plus, mais sans message d’erreur d’inclusion. Mais je ne saurais pas dire, l’ancien informaticien est parti sans laisser d’infos derrière lui...)
Merci pour votre aide si vous y trouvez quelque chose !
D.
(Le site, pour visu, est celui du « Collège Centre » de Gap)
https://www.clg-centre-gap.ac-aix-marseille.fr/spip2/
SPIP 3.2.9
Formidable 4.8.0
Comment insère tu le formulaire dans l’article ? Juste pour être sur.
Mais cela m’a l’air typique d’un squelette qui utilise des
#INCLURE
à la place de<INCLURE>
.Non, pourtant c’est avec les symboles adaptés, les mêmes que pour l’inclusion des images et pdf qui fonctionnent.
<formulaire|formidable|id=section_sport_2022_1642512187>
(j’ai mis un formulaire google en attendant, depuis mon dernier post, ce qui a fait disparaitre le message d’erreur sur le site, mais la situation n’est pas rétablie pour l’inclusion du formulaire formidable, hélas)
Merci pour votre temps !
Hum, ok donc l’appel est correct. Mais il faudrait vraiment regarder la construction des squelettes pour savoir s’il y a des
#INCLURE
ou des#INCLURE
Répondre à ce message
Bonjour,
Dans les deux sites sous Spip 3.2.11 que j’ai ici, les exports en CSV ou XLS produisent des fichiers vides (0k), j’imagine que c’est lié au serveur car cela fonctionne sur d’autres sans pb. J’ai testé sous PHP 7.3 ou 7.4 avec le même résultat. Quelles sont les extensions PHP dont il faudrait vérifier l’activation pour cette fonctionnalité d’export ? Ou y a-t-il un dossier temporaire dans lequel sont générés ces fichiers avant l’export ?
Merci d’avance, Luc
Petit up ? Pour info, j’ai passé l’un des 2 sites sous SPIP 4 avec les plugins dans leurs dernières versions, mais l’export des réponses en CSV/XLS pond toujours des fichiers vides :(
Update : ces deux sites étant chez Infomaniak, je suppose que le pb vient de Spip Bonux et correspond à ce ticket ouvert : https://git.spip.net/spip-contrib-extensions/spip-bonux/issues/7
Oui, c’est à peu près sûr :)
Je suis repassé au commit précédent du fichier inc/exporter_csv.php, faute de mieux, ce qui règle le problème, à défaut de le résoudre :)
Répondre à ce message
bonjour,
Apres un passage à spip 4 les plugins mis à jour j’ai un formulaire dont je n’arrive plus à configurer les champs quand je clique sur le crayon,
Il s’agit d’une erreur php .
PS : je suis sur un PHP 8.0
Pouvez vous m’aider ?
Cordialement
vous avez bien le plugin verifier activé ?
Oui ,
API de vérification 2.0.0 est activé
hum, je ne reproduis pas, et en plus en regardant le code je ne vois vraiment pas comment cette erreur peut se produire.
Je vous suggérerais de desactiver/reactiver les plugins formidables/saisies/verifier.
J’ai désactivé / réactivé les plugs en question mais rien à faire tjrs la même erreur !
Bon sinon je vais tenter dans la semaine une réinstallation de zéro...
Merci pour les pistes en tout cas
Répondre à ce message
Bonjour,
depuis la mise à jour de juin (version 4.15.2 stable), le critère tri_selon_reponse ne fonctionne plus sur mon site. Est-ce qu’il y a une nouvelle façon de trier les réponses ?
Merci d’avance pour vos réponses
J’ai finalement trouvé un début de réponse ici : https://contrib.spip.net/Formidable-le-generateur-de-formulaires?debut_comments-list=@461673#comment461673
Répondre à ce message
Bonjour est-il possible de créer un champ extra qui permette un copier coller d’un #FORMULAIRE_FORMIDABLE34 ou plutot
?
Je n’ai absolument pas compris la question :)
Je retente.
Bonjour,
j’aimerais créer un champs extra qui accepte les modèles de formulaire. Par exemple
ou bien
. Ces intégrations du formulaire sont valides dans le champs texte, ou chapo d’un article, mais pas dans le champs extra de base
Je ne vois pas le rapport avec ici alors, c’est dans le forum de Champs Extras qu’il faut poser la question. N’importe quel champ peut accépter les modèles (les modèles, pas les balises, ça c’est du code pour dev dans les fichiers), ya une option pour ça dans la création du champ.
Répondre à ce message
Bonjour, c’est par rapport à la langue allemande. Lorsque l’on soumet le formulaire, on a un texte non traduit.
Il semble qu’il manque l’entrée
traiter_enregistrement_message_ok
danslang/formidable_de.php
.On utilise la version 4.8.0 et il n’y en a pas encore sur la branche master
Pour l’instant, on a fait un modif en dur avec la traduction :
Vielen Dank für Ihr Interesse. Ihre Antworten wurden aufgezeichnet.
La traduction ne se fait pas dans le code, mais pas l’application centralisée de la communauté pour ça : trad.spip.net
C’est (très) loin d’être la seule chaine manquante : l’allemand n’est traduit qu’à 20% pour ce module « formidable » :
https://trad.spip.net/tradlang_module/formidable?lang_cible=de
Le mieux est donc de s’inscrire sur l’appli, et de participer à la traduction ! :)
(et pour le plugin Formidable complet, il y a plusieurs modules de langue, 4 je crois)
Répondre à ce message
Bonjour,
Je cherche une solution pour recevoir en ligne des informations émises par des logiciels libres que je développe : ils contiennent un petit tracker pour que je puisse compter les utilisateurs (avec un avertissement tout bien komilfo).
Jusqu’à cet été, on m’avait fait un truc avec un formulaire de chez l’Ooggle, ça ne me plaisait pas beaucoup. Une commande GET déclenchait une « réponse sur le formulaire » que je pouvais ensuite retrouver dans un tableur en ligne. Mais maintenant ça ne marche même plus.
A l’April on m’a suggéré de regarder ce qu’il y a comme plugins dans Spip, que je connais bien, qui pourraient m’aider.
Ma question : en passant par Formidable, puis-je faire remplir automatiquement le formulaire par le même type de commande incluse dans le code de mon application, de manière transparente pour l’utilisateur ? N’est-ce pas inutilement compliqué, il existe peut-être un moyen d’inscrire directement des trucs dans ma base de données ? Mais alors, par un plugin, parce que moi programmer du PHP toussa, c’est pas dans mes compétences...
Merci de vos avis,
Alors, j’ai relu deux fois, mais désolé pour le moment… je n’ai absolument rien compris à ce que tu cherches à faire ! :D
Je ne comprends déjà pas « une solution pour recevoir en ligne des informations émises par des logiciels libres que je développe »
Hello, pour tenter d’être clair :
1- dans mon logiciel il y a un tracker
2- il consiste en une ligne GET envoyée à un OoggleForm, qui au final ajoute une ligne à un tableur
3- Formidable peut-il recevoir une commande équivalente ?
4- Ai-je vraiment besoin d’un formulaire, dans le fond tout simplement envoyer en direct une ligne à ma base de données Spip ? Avec quel plugin ?
Que ce soit en GET ou en POST, un formulaire n’est déclenché que par son bouton, pas en appelant une URL. Dans le GET de l’URL on peut parfois donner des infos pour préremplir les champs du formulaire mais ça ne l’envoie pas, ça ne le déclenche pas. Et dans tous les cas, les formulaires Formidable sont toujours postés en POST.
Ton besoin a plutôt l’air d’être une sorte d’API, où quand on requête sur telle URL ça enregistre en BDD. Mais bon pour ça faut un truc un peu sécurisé (avoir une clé d’API ou demander à fournir email/mdp aussi lors de la requête pour être connecté) parce que sinon n’importe qui pourrait remplir la base à l’infini sans aucune autorisation spéciale.
Il n’y a pas de trucs totalement clé en main pour ça il me semble, c’est trop spécifique. Mais ça va pas se faire avec des formulaires qui sont en POST et qui ne s’activent que par leur bouton submit.
Merci pour cette réponse très claire ! Effectivement le problème c’est de ne pas laisser un trou béant dans la base de données...
Répondre à ce message
Bonjour,
Je souhaitais savoir comment limiter le nombre de réponses par personne et par jour.
En vérifiant l’unicité sur le champ « email » il est simple de limiter a une réponse par adresse, mais je souhaiterais permettre la soumission d’une nouvelle réponse le lendemain.
Est-ce que quelqu’un aurait une piste svp ?
Cette fonctionnalité n’existe pas en tant que configuration. Si tu sais ou que tu connais quelqu’un qui sait coder en PHP, une vérification pourrait être ajoutée (en s’insérer dans le pipeline « formulaire_verifier » pour ce form précis). Mais ya rien de tout cuit.
Parfait, merci bcp pour ce retour.
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 : |