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,
Dans un formulaire comportant une liste de 20 propositions,
Comment procéder pour limiter seulement à 3 réponses maximum
Des solutions existent-elles ?
Merci de votre aide.
Non ça n’existe pas du tout pour le moment. Le truc c’est que ce n’est pas une vérification de valeur (donc pas dans le plugin Vérifier qui génère la liste des vérifications de champs libres), mais un comptage du nombre de choix dans un tableau, c’est-à-dire au moins pour les cases à cocher et les select multiples.
Merci pour la réponse.
Pourrait-on contourner ce non-comptage du nombre de choix dans les « liste multiple » et « cases à cocher », en mettant 20 boutons « radio » ou 20 « cases uniques » , mais avec un affichage « conditionnel » dès que trois boutons ont été remplis ?
C’est peut-etre tordu comme idée ?
Euh oui ça me paraît tordu. :D
Tu mets 3 listes déroulantes simples avec chacune les 20 options, c’est pas mal ?
Ca permet aussi de hiérarchiser les 3 choix au cas où (le + important en 1er)
Un petit JS optionnel, qui fonctionnera chez 99% des users, pour éviter les doublons
Répondre à ce message
Bonjour,
Sur un spip 3.017 avec squelette Escal,
j’ai une « erreur survenue lors de l’envoi du courriel. »
au remplissage d’un formulaire incorporé dans un article avec
Les champs simples sont les suivants
Le message est : « Une erreur est survenue lors de l’envoi du courriel. »
et ensuite ceci :
« Warning : max() : When only one parameter is given, it must be an array in /home/siteweb/www/plugins/auto/formidable/v2.6.3/traiter/enregistrement.php on line 57 »
L’adresse de l’article concerné est ici
Je tourne en rond sans trouver comment faire fonctionner ce simple questionnaire d’inscription.
Avez-vous une solution ?
Merci de votre aide.
Information complémentaire oubliée,
les adresses email entrées sont pourtant comptabilisées et enregistrées parmi les réponses lues dans la partie privée du formulaire formidable .
Bizarre ! ..
L’envoi du mail et l’enregistrement sont deux traitements n’ayant rien à voir, ils sont appelés séparément. Pour l’envoi du mail, il faut que le serveur puisse envoyer des mails : tu as d’autres mails qui marchent bien sur le site ? Pour bien configurer, il faut tester avec le plugin Facteur qui gère, si l’envoi fonctionne dans sa page de config.
Bonsoir,
Les mails partent correctement par le smtp configuré ches OVH lorsque l’on utilise facteur pour tester les newsletter avec mailsuscriber ...
Avec Facteur le test donne : « L’email de test a correctement été envoyé. Si vous ne le recevez pas correctement, vérifiez la configuration de votre serveur ou contactez un administrateur du serveur. » et on reçoit bien un email dans la seconde qui suit. (Ovh est à 10km)
C’est avec ce message d’erreur de Formidable que je ne comprends pas trop ce qui disfonctionne .
Merci de tous conseils.
Pour le Warning, c’est normalement corrigé par : http://zone.spip.org/trac/spip-zone/changeset/84342
Répondre à ce message
Bonjour,
lorsqu’on crée un formulaire, qu’on ajoute le champ de la liste des auteurs à un squelette (par ex :
<formulaire|formidable|id=12>
, existe-t-il un moyen de supprimer 1 voir 2 auteurs de cette liste ?MERCI !
heu, je n’ai rien compris... vous parlez d’ajouter des auteurs à un squelette, mais vous ne citez pas de squelette, et le code que vous indiquez ne parle pas d’auteur....
Répondre à ce message
Bonjour à tous,
J’ai des problèmes pour exporter les réponses à un formulaire au format csv. Lorsque je clique sur le lien “Exporter les réponses”, le téléchargement échoue systématiquement. Chromium me dit “Erreur réseau inconnue”, Firefox me donne du “/tmp/gqx2ysVx.csv.part ne pourra être enregistré car le fichier source ne peut être lu. Réessayez plus tard ou contactez l’administrateur du serveur.” Le fichier est pourtant bien généré, je le trouve dans tmp/cache/export/ , mais c’est le téléchargement qui plante.
J’ai d’abord pensé à un souci de configuration du serveur, mais le problème se produit aussi en local. Détail important : c’est sur un SPIP 2.1.26, avec la dernière version de formidable compatible 2.1 : la 0.8.5. Spip-bonux est aussi à jour…
Merci d’avance pour vos lumières !
Répondre à ce message
Bonjour,
Il me semble que je rencontre une petite erreur de comportement pour la vérification d’un champ obligatoire Destinataires.
J’ai créé un champ Destinataire dont je souhaite la saisie obligatoire, je l’ai paramétré pour « Permettre à l’utilisateur de choisir un seul destinataire ». J’ai également renseigné le label du premier choix vide par « Choisissez... ».
L’erreur détectée est que si l’utilisateur omet de renseigner le destinataire, le formulaire est tout de même validé, considérant sans doute en raison du label « Choisissez... » que le champ n’est pas vide.
Bug or not bug ?
Le label n’a rien à voir, c’est l’attribut
value=""
qui compte. S’il est vide, ça envoie du vide.Tout à fait, le code source du label vide est d’ailleurs :
Cependant, lorsque je renseigne un label à ce champ destinataire, la vérification de la sélection ou non par l’utilisateur ne se fait pas : même si aucune sélection n’est faite le champ est considéré comme bon ( Je peux t’envoyer un lien en MP pour que tu puisses constater ).
Merci en tout cas ton retour.
S’il y a bien une valeur vide
value=""
dans le HTML, alors le formulaire ne poste rien. Si ce n’est pas le cas, le navigateur a un problème… (IE ?)Enfin, l’erreur peut aussi être côté vérification… mais je ne vois pas pourquoi.
Je suis pas fou, je travaille pas sur IE ;-)
Cela se produit sur Firefox, tout comme sur Chrome.
Une remarque complémentaire qui peut sans doute mettre sur la piste.
Je pense que dans l’espace privé, le modèle de paramétrage du champ type Destinataire n’est pas bon, en particulier au niveau de l’onglet Validation.
En effet, bien qu’il s’agit d’une liste de choix, le paramétrage de Validation présente - outre le caractère Champ obligatoire et Message d’obligation - le paramètre Type de vérification à effectuer... qui n’a pas lieu d’être.
Bien sûr par défaut, il est réglé à Aucune...
Hello RastaPopoulos,
Confirmes-tu qu’il y un soucis concernant le champ type Destinataires lorsqu’on active la validation d’une saisie obligatoire ?
Si oui, as-tu des pistes pour corriger le comportement ?
Merci à toi
Mets à jour Saisies. :)
http://zone.spip.org/trac/spip-zone/changeset/83646
Héhé, merci RastaPopoulos ;-)
Le champ est dorénavant correctement contrôlé.
Je crois qu’une amélioration pourrait être encore apportée.
Comme dit précédemment, dans le paramétrage du formulaire, pour le champ Destinataire, l’onglet Validation présente - outre le paramètre Champ obligatoire et Message d’obligation - le paramètre Type de vérification à effectuer.
Ce dernier paramètre ne devrait pas être proposé pour ce type de saisie.
Qu’en penses-tu ?
Et voilà :
http://zone.spip.org/trac/spip-zone/changeset/83706
Répondre à ce message
bonjour,
j’utilise ce formidable plugin ... et j’aimerai pouvoir imprimer les informations du mail envoyé aux destinataire avec les réponses ou imprimer les réponses depuis l’espace privé ? est-ce possible ? par quel biais ?
merci
Je ne saisis peut-être pas trop la question, mais… : en faisant Fichier=>Imprimer dans ton client email ?
je pensais à un pdf de la réponse ou à une impression depuis l’espace privé
je ne voudrais pas l’entête du message lorsque j’imprime le mail coupe la réponse et la met sur 2 pages mais bon peut être que j’utilise mal la messagerie
sinon Le plugin est vraiment FORMIDABLE
merci de m’avoir répondu
Répondre à ce message
Bonjour,
Super le plugin ! ça sent la belle ouvrage.
Néanmoins : où sont les css ?(oui il faut du style, les programmeurs en manquent cruellement)
un petit récapitulatif des css utiles serait utile !
dragon
Non.
Ce plugin sert à générer des formulaires. Pas à ajouter des choses aux thèmes graphiques des sites.
Pour styler les formulaires, ben c’est dans ton thème graphique du site. Comme n’importe quels autres styles des éléments de base : typo, titrage, couleur, boutons… et formulaires. Cela ne fait pas parti, et ne fera jamais parti, du cadre de ce plugin.
Répondre à ce message
Bonsoir,
D’abord un tout grand merci pour ce plug-in, c’est vraiment bien pensé et très pratique à utiliser.
J’ai néanmoins une question : est-il possible de changer la valeur du bouton d’envoi (input « submit ») d’un formulaire inclus dans un squelette ? Je cherche depuis plusieurs dizaines de minutes et je n’arrive pas à trouver comment faire. Merci :).
Non, malheureusement, ce n’est pas une fonctionnalité existante pour l’instant. À rajouter dans les trucs à faire…
Répondre à ce message
Salut,
J’essaie de faire passer des infos à des champs cachés d’un formulaires. Le formulaire apparaît bien. Ces infos sont déjà en base mais rien ne passe au le formulaire. Si je test en dehors du formulaire, les infos sont correctement extraites. Est-ce que je m’y prends bien ?
merci de vos réponses.
Ben oui, c’est le nom des champs que tu dois mettre en clé du tableau. Comme expliqué ici plus haut :
Autant pour moi et désolé pour le bruit. Les champs sont des hiden listé. Si je lis la doc à moitié rien ne va plus. :)
Répondre à ce message
Bonjour,
J’ai besoin que les réponses du formulaire puisse être envoyées à une adresse email A ou une adresse email B en fonction du choix d’un champ sélection.
Est-ce que c’est directement possible par le paramétrage du formulaire ?
Sinon, sans doute dois-je éditer le fichier formidable/ traiter/email.php ? Dans ce cas, je ne connais pas la syntaxe pour y manipuler la variable selection_1 .
Merci pour votre aide,
Hervé
C’est une fonctionnalité qui n’existe pas pour le moment.
Merci pour le retour :-)
Pour mon cas particulier, la piste de l’édition du fichier formidable/ traiter/email.php est-elle la bonne ?
Je n’arrive pas à y récupérer la variable $selection_1 pour déterminer, en fonction de sa valeur, une valeur pour la variable $destinataires.
Je serais preneur d’un petit coup de pouce !
Merci en tout cas pour ce formulaire qui porte bien son nom,
Hervé
Si c’est juste pour UN formulaire, tu peux plutôt créer des comptes utilisateurs fictifs, avec les emails voulus, avec comme nom le texte des choix que tu veux présenter, et utiliser le type de champ Destinataires, qui sert à ça (choisir un ou plusieurs destinataires).
Merci RastaPopoulos de t’intéresser à mon problème. Je ne suis pas sûr de comprendre ta proposition.
Je te détaille mon besoin :
les utilisateurs sont invités à renseigner un (ou plusieurs) formulaires de contact - dans leurs informations d’adresse, selon le département qu’il renseigne (champ sélection), leur réponse est envoyée soit à une adresse email A soit une adresse B.
Qu’en penses-tu ? Je suis prêt à mettre les mains dans le cambouis si on me donne quelques ficelles.
Sinon, ben je referai tous mes formulaires à la main en CVT... ce serait bien dommage :-(
Ben tu fais un champ Destinataires avec comme label « Département », et tu le configures pour donner le choix entre des comptes utilisateurs de ton choix, que tu nommes avec les départements en questions (il faut les avoir créé avant, comme dit précédemment).
Ok, c’est une option !
Mais, pourquoi précisais-tu que c’était valable pour UN formulaire ?
Ne puis-je pas utiliser cette parade pour plusieurs formulaires où le département de l’utilisateur est demandé ?
Si si, bien sûr que si. C’était plus par rapport au nombre de cas différents où tu dois utiliser le même principe, après ça fait créer plein de faux comptes pour rien. C’est juste que ça peut devenir chiant. Mais si c’est toujours pour le même besoin, c’est toujours les mêmes comptes de toute façon.
Merci RastaPopoulos, ça m’a l’air de bien fonctionner !
Pas besoin de refaire les formulaires en CVT, ouf !
Et encore merci pour le service SAD hyper réactif :-)
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 : |