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,
je voudrais bien modifier la mise en page du formulaire dans le site public mais je ne sais pas quel fichier surcharger.
Merci pour votre aide
Comme n’importe quoi d’autres dans ton site, ça n’a pas de spécificité avec ce plugin, qui ne s’occupe absolument pas de graphisme.
Ça dépend de ton squelette/thème, celui fournit de base ou un autre (et dans ce cas demander à son auteur). Pour la dist de SPIP, on peut avoir un fichier « perso.css » et s’il est présent c’est pris en compte pour ajouter ses règles après les autres à priori.
Répondre à ce message
Bonjour à tous, et merci pour ce plugin tellement utile, et que j’utilise tellement :)
J’ai un cas de figure où j’ai besoin de mettre à jour régulièrement la liste déroulante d’une question (de nouveaux items viennent s’ajouter et les plus vieux doivent disparaître). Pour les nouveaux items aucun problème, mais pour ceux que je dois retirer de la liste, le problème qui survient et que quand je souhaite exporter les réponses, celles qui comportent les choix à présent disparu n’ont plus de valeur « textuelle » pour cette question, uniquement la clef. Y a-t-il un moyen de contourner cela ?
Merci d’avance.
Non je ne vois pas trop comment. Si tu les supprimes, ça ne fait plus partie de la config, et dans la base de données, pour les anciennes réponses, c’est la clé technique qui est gardée en mémoire dans la table forcément.
C’est bien ce que je me disais, dommage, mais merci pour le retour rapide. Il serait imaginable de créer une nouvelle « saisie » qui bouclerait sur une table de référence ?
@Rastpopoulos : on pourrait imaginer une syntaxe pour avoir une équivalence clé/humain conservé mais non affiché. Ou bien un sous paramètre de saisie
C’est vrai que si on pouvait ajouter un caractère qui serait interprété comme une exclusion dans la requête, ça serait top. Je creuserai la chose, car la nécessité est bien présente en ce qui me concerne. Encore merci.
Répondre à ce message
Bonjour,
J’ai une question qui va peut-être vous sembler bête, mais je me lance !
J’ai besoin d’insérer dans un site un formulaire de recherche par sélection du type : je sélectionne un 1er critère dans une liste déroulante A, puis un 2e dans une liste déroulante B et un 3e dans une liste C. Et à la fin je dois obtenir une liste d’articles qui réunissent ces 3 critères. Je n’ai pas trop la notion de comment faire ça. Est-ce que c’est possible d’exploiter la base de cette façon avec Formidable ?
Et sinon avec quoi est-ce que ça peut se faire ?
Merci de votre aide et pardon d’avance si je suis hors sujet...
Salut,
clairement pas. Formidable est un plugin pour des formulaires où l’on poste des données (contacts, inscriptions, etc.), pas pour de la recherche.
Tes critrèes seraient des mot clefs ? ou autre chose ? Si oui, le plugin critères mots est fait pour toi.
Dans tous les cas je te conseille de demander de l’aide sur les la liste de discussion des utilisateur·trices de spip.
Bonjour,
Je te remercie de ta réponse. Mes critères ne sont pas des mots clés mais des données de champs extra que j’ai ajoutés aux articles (lieu ; niveau d’étude par exemple).
Pour la liste des utilisateurs tu veux parler du forum ?
Merci en tout cas de ta réactivité :-)
Alors il faudra construire « à la main » ton formulaires qui appellera un squelttes qui te donnera la réponses.
pour la liste, je pensais à cela http://listes.rezo.net/mailman/listinfo/spip
mais il y aussi les ofurms.
Répondre à ce message
Bonjour,
Il semble qu’il n’y ait pas de Placeholder sur les champs « Date »... serait-il possible d’en rajouter un ? Ce serait bien utile dans certains cas. Merci.
Répondre à ce message
Je teste ce générateur de formulaire, et il m’a l’air très bien, sauf qu’il me manque des champs importants, la possibilité de saisir des coordonnées gps, et surtout d’afficher des cartes (google map ou open street) avec ses coordonnées et des infos sous forme de bulles sur la carte.
Des idées pour pouvoir le faire ?
Merci de votre travail partagé à la communauté.
Bonjour,
Les inclusions de cartes et de points géolocalisés dans les contenus SPIP se font avec le plugin GIS 4 qui permet de choisir parmi une multitude variée de couches de cartes.
Je pense que les concepteurs et utilisateurs de gis vont pouvoir vous aider pour cela.
Bon week-end
Ben pour ça faudrait une saisie « coordonnées » sauf que une saisie en théorie ça enregistre une valeur, alors que là c’est DES coordonnées, une latitude et une longitude, donc je ne sais pas trop quelle est la meilleure approche…
Par ailleurs, ça sert avant tout à faire des questionnaires, sondages, etc, ce n’est PAS un gestionnaire de contenus, ce n’est pas fait pour créer des fausses tables de contenus, dont on se sert ensuite pour générer des pages etc. On peut tous bidouiller, mais ce n’est pas fait pour ça à la base.
Répondre à ce message
J’aimerais pouvoir faire quelques requêtes simples — à partir d’une page php — sur la table produite à partir des données entrées par les utilisateurs via un formulaire formidable.
Mais je n’arrive pas à trouver comment s’appelle la table produite.
Merci d’avance de tout éclairage.
1. Comme (presque)toujours en SPIP, il ne faut pas utiliser de requete PHP, mais un squelette contenant des boucles et balises. Cf https://geekographie.maieul.net/13 par ex (quelques exceptions : https://contrib.spip.net/Du-php-dans-le-squelette-a-la-place-de-SESSION-ou)
2. Il n’y a en réalité pas un table poru les résultats, mais plusieurs tables qui se combinent.
- table formulaires qui contient la description des formulaires
- table formulaires_reponses qui contient la description de chaque enregistrement SANS les valeurs enregistrées
- table formulaires_reponses_champs qui contiennent les valeurs champs par champs
Je te conseil de jeter un coup d’oeil sur https://zone.spip.org/trac/spip-zone/browser/spip-zone/_plugins_/formidable/trunk/modeles/formulaires_reponse.html pour voir un ex.
Merci.
Je vais lire tout ça.
Répondre à ce message
Bonjour,
Avec Formidable 3.12.2 - stable sur un SPIP 3.2.1 [23954] lorsque je fais « exporter toutes les réponses en CSV » j’obtiens un fichier ZIP qui contient un csv avec mes 444 réponses >> OK
Dans le zip il y aussi les fichiers joints via CVT mais ce uniquement pour les 12 dernières réponses >> pas OK
Dans le répertoire config/fichiers/formidable/formulaire_2/reponse_xx/fichiers_x j’ai bien les 444 dossiers avec les fichiers joints.
Donc je peux les rapatrier via FTP mais les admin sans accès FTP sont coincés.
dd
1. Possible que ce soit un bug parce qu’il y a trop de fichiers, et que l’outil de zip ne fonctionne pas.
2. Les fichiers sont mis à plas non ? as tu des fichiers avec le même nom ?
J’ai réussi à récupérer le tout en important une sauvegarde de la table formulaires_reponses_champs et l’export fonctionne maintenant.
Je pense que la base a été abîmée suite à une pétouille avec https dans l’espace privé que je n’ai pas encore comprise mais qui c’est résolue d’elle même en 48h (problème de cache sur le serveur ?)
Il y a des fichiers de même nom mais pas dans les mêmes dossiers a priori.
Merci
Répondre à ce message
Le message de retour s’affiche en haut du formulaire après validation. Est il possible de l’afficher à côté du bouton « valider » ?
oui, mais cela n’a guère d’interet, car alors tu arrive en bas du formulaire, et tu dois remonter pour le re-remplir.
il te faut surcharger le squelette « formulaires/formidable.html » (qui se trouve dans le dossier du plugin : tu le recopie dans ton dossier formulaires de ton dossiers squelette, et tu fais tes modifs)
Mon idée était d’avoir un message qui permette à l’utilisateur de comprendre que l’envoi a bien été pris en compte car lorsqu’on clique sur « valider » il n’y a rien de visuel permettant à l’utilisateur de savoir si son envoi est bien réalisé (la phrase de retour étant en haut, elle n’est pas nécessairement vue et ne joue donc pas ce rôle de confirmation).
normalement, lorsque tu valide, tu est automatiquement remonté en haut du formulaire, justement....
si ce n’est pas le cas, c’est que tu as un problème ailleurs.
ok, merci. En fait il y a effectivement une petite remontée (que je n’avais pas vu).
Est ce que ce message de retour peut être fonction des données entrées par l’utilisateur dans le formulaire ?
Sinon comment faire en sorte que l’utilisateur sache qu’il s’agit d’un nouveau message de confirmation lorsqu’il utilise plusieurs fois de suite le formulaire ?
c’est étrange de remplir plusieurs fois de suite le même formulaire. Est-ce qu’il n’y aurait pas un souci de conception ?
Pour le moment non le message de retour est statique, mais je teste si on peut modifier le comportement de formidable pour le personnaliser.
je te tiens au courant,
« c’est étrange de remplir plusieurs fois de suite le même formulaire. Est-ce qu’il n’y aurait pas un souci de conception ? »
peut-être bien, oui. En fait il s’agit d’inscrire des personnes, un même utilisateur pouvant en inscrire plusieurs. Mon idée de départ était d’avoir un champ pour entrer le nombre de personnes qui allait être inscrites puis d’ouvrir autant de champs que nécessaire. Mais je n’ai pas vu comment réaliser cela via le plugin.
a oui je comprend. Alors non malheureusement pour le moment pas possible (enfin il y a peut être un plugin externe qui ferait ceal, mais il n’est pas documenté et je n’ai jamais eu le temps de le tester)
cela étant, je pense que si le plugin était fonctionnel, il serait mieux d’avoir un ficher/un enregistrement par personne.
Avec la version formulaire rempli plusieurs fois, ça marche pas mal. Mon seul souci est maintenant ce message de retour afin que l’utilisateur sache où il en est.
merci pour tes réponses
La version 3.13.0 du plugin, qui sera bientôt disponible au telechargement/la mise à jour
permet d’utiliser les @raccourcis@ dans le message de retour
Super !
merci
Répondre à ce message
Bonjour
Pourriez m’indiquer la démarche à suivre pour modifier la présentation d’un formulaire (par exemple remplacer le mot « obligatoire » des champs obligatoires par un autre mot) ?
merci d’avance
Ce n’est qu’un petit aspect de la modification de la présentation.
Mais pour répondre sur ce point :
- on peut régler le texte champs par champs
- on peut modifier globalement en surchargeant la chaine de langue « info_obligatoire_02 » (mais cela se repercutera sur d’autre formulaires)
cela étant, je ne vois pas l’interet de changer.
Merci. je ne trouve pas comment procéder.
- on peut régler le texte champs par champs : à quel endroit ?
- on peut modifier globalement en surchargeant la chaine de langue « info_obligatoire_02 » : où trouve-t-on cette chaîne ?
- est ce qu’il est possible de redéfinir une page "squelette" pour les modifications à faire ?
merci d’avance de tout éclairage
En fait pour règler le « message d’obligation », je pensais avoir trouvé mais ça ne marche pas à chaque fois (j’ai mis un simple point ., ça laisse « obligatoire » sur certains champs, ça met bien un point dans d’autres cas).
- aucun interet de remplacer par un point qui n’a strictement aucun sens
- le reglage du message d’obligation se trouve en dessous de la case qui permet de rendre obligatoire un champ ;-)
- il s’agit d’un chaine de langue standard de SPIP. Je t’invite à lire
https://www.spip.net/fr_article2128.html « mehtode des fichiers de langue »
- il se peut que certains types de saisie aient un comportement derogatoire, si tu peux me dire lesquels, on peut regarder ce qu’il en est.
- pas compris pourquoi tu veux faire un squelette
« - aucun interet de remplacer par un point qui n’a strictement aucun sens »
dans un formulaire où tous les champs sont obligatoires, c’est juste un peu lourd d’avoir (obligatoire) sur tous les champs. Une phrase le précisant au départ me semblait plus adaptée.
Répondre à ce message
Bonjour,
Avec la mise à jour vers la version actuelle, j’ai eu sur 2 sites en SPIP 3.1.8 SVN :
bizarre, tu devais avoir une version de la base pas correct avant la maj...
a priori pas hyper grave, puisque le but de la fonction était justement de recuperer le contenu de la colonne pour la mettre ailleurs.
Je repense à ce truc. C’est quand même hyper bizarre. tu aurais par hasard un dump de la base avant la mise à jour ?
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 : |