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,
je cherche à permettre aux internautes de choisir dans une liste (case à cocher ou autre) le mail auquel un formulaire doit être aussi envoyé ...
Mais je me demande comment faire ?
une idée ?...
Merci,
RBurton
Ya un champ destinataires pour cela.
Répondre à ce message
Bonjour,
Est-ce qu’il est possible de diriger les réponses selon un choix fait dans un champ ?
Ex :
Menu déroulant avec plusieurs choix :
Les tartines au chocolat
Les tartines à la fraise
Etc...
Si je choisi les tartines au chocolat alors la réponse du formulaire est envoyée à tartinesauchocolat@douceur.com
Ya un champ destinataires pour cela.
Répondre à ce message
Spip 2.1.17
Php 5.4.4
Formidable : Version : 0.6.6 [65153]
Vérifier : Version : 0.1.16 [64891]
facteur : Version : 1.8.9 [60363]
Saisies : Version : 1.26.2 [64324]
Bonux : Version : 2.3.0 [61354]
YAML : Version : 1.5.0 [63998]
Il semble y avoir un problème avec les nom de site qui ont des accents, car le test avec le plug « facteur » fonctionne très bien, mais si je complète le formulaire et fait un envoi, j’ai :
« Dansé » à la place de « Dansé »
Cordialement, Franck
Ah l’encodage ça dépend de plein de choses, de la page où se trouve le formulaire, de la méthode d’envoi, etc. URL ?
http://www.lien-d-amis.net/spip3/spip2/spip.php?article12
A savoir que dans « facteur », j’ai cocher la case « Convertir en ISO-8859-1 »
Mais bon, de toute façon, si je fais un test de facteur, cela focntionne
Et si la conversion n’est pas coché dans Facteur ?
ça marche, par contre, je ne sais plus pourquoi, mais il y a une raison pour que je l’ai cocher, possible que cela soit dû à un autre plug (spip-lettre ?)
Sur ce, merci, et crois qu’il tems que je face dodo
Répondre à ce message
Bonsoir,
Depuis un moment j’essai de comprendre comment rré-remplir dynamiquement les champs select avec les titre des articles, mais j’ai pas sus comment faire.
Pouvez-vous m’aider SVP
Mais de quels articles ? Tous ? Dans tous les cas, il n’y a pas de saisie pour ça actuellement donc :
Tu dois créer ta propre Saisie qui fait ce que tu veux, sur le modèle des autres Saisies du plugin éponyme, c’est juste un fichier HTML qui produit le champ, et un fichier YAML qui lui donne un titre, une icône, etc. « articles.html » et « articles.yaml » par exemple, et tu peux copier sur une saisie qui ressemble comme par exemple la saisie des auteurs.
En fait je veux mettre uniquement des articles d’une rubrique précise, donc il y en aura qu’une dizaine au final.
Comme il y aura peux de choix, je sais que je peux le faire à la main, mais ma crainte c’est qu’un jour j’oublie de le faire, d’ou mon obligation de le faire dynamiquement.
J’ai essayé de voir auteur.html et auteur.yalm, mais destinataire.html et yalm semble le plus proche de ce que je veux faire.
J’ai essayé, mais je n’y arrive pas.
Répondre à ce message
Bonjour ! Et merci de ce plugin élégant et fort utile, et attendu !
Installé le plugin avec un spip 3, ça marche en local de manière superbe (sauf la remarque précédente sur le "obligatoire" un peu trop obligatoire !). Je transfère tout sur un serveur, et patatras : "5 erreurs dans le squelette" : Table SQL « FORMULAIRES » inconnue. J’ai essayé successivement : de 1)restaurer la base à partir d’un dump - 2) restaurer la base intégrale par phpmyadmin - 3) restaurer uniquement les tables "formulaires-". C’est toujours la même chose. Et si j’essaie d’importer un formulaire yaml, j’ai un warning : Warning : Invalid argument supplied for foreach() in /home-----/ecrire/inc/modifier.php on line 112.
Que puis-je tenter ?
Précision : spip 3, dernière version du plugin, php 5.2.17, mysql 5.0.95-community. Il traîne dans la base de "vieilles" tables de forms&tables : elles perturberaient quelque chose ?
Re... Ce n’est pas pour « spammer », mais pour aider ! Ayant supprimé les vieilles tables « forms », puis les tables « formulaires » via phymyadmin, désinstallé et supprimé le plugin, puis rechargé, je repars à l’assaut. Re-patatras : voir image.
Bel été à tout le monde !
Bonjour, j’ai le même pb. Si solution trouvée............je suis preneur
Merci
Même chose ici, le transfert s’est mal passé et impossible d’obtenir un plug fonctionnel. La désactivation et désinstallation ne nettoie pas en profondeur. Du coup on ne peut pas ré-installer proprement.
Bonjour tout le monde, j’ai le même pb. Sauf que chez moi les formulaires s’affichent bien dans la partie publique mais pas dans l’espace privé. Quelqu’un pourrait nous aider ?
Merci
SOS Il n’y a toujours personne pour nous aider ?
J’ai pas encore résolu le souci, mais je pense que ça vient de la déclaration des tables dans : formidable_1_0/base/formidable_tables.php
Re,
donc ok c’était bien ça le souci, en remettant un peu en forme ce fichier, désactiver le plugin puis le réactiver, et hop , ça marche.
en fait, par rapport au souci de ce fichier, spip n’arrive pas à boucler sur les table du plugin d’où le souci.
Tout le code php était sur une ligne, donc avec les commentaires ça posait souci.
Au final on obtient kk chose comme ça :
Bonjour et merci beaucoup. Chez moi ça marche correctement.
Le truc c’est que le fichier n’est absolument pas sur une seule ligne :
http://zone.spip.org/trac/spip-zone/browser/_plugins_/formidable/trunk/base/formidable_tables.php
Ni sur ce qu’affiche le dépôt SVN, ni sur aucun de mes éditeurs de texte. Donc je ne comprends toujours pas d’où ça vient...
Aaaaah je crois avoir compris !
La commande « file » de mon système, me donne comme réponse :
PHP script, UTF-8 Unicode text, with CR line terminators
Ce qui signifie que quelqu’un a dû modifier, enregistrer et envoyer sur le SVN ce fichier avec un éditeur Windows pourri qui fait des fins de ligne pourris !
j’ai peur de paraître lourd mais j’ai toujours un message d’erreur à la validation de mon formulaire
Erreur SQL 1146
Table ’lesmerlins81.spip_formulaires’ doesn’t exist
SELECT id_formulaire FROM spip_formulaires WHERE identifiant = ’resa and id_formulaire != 0’
Je suis sous spip 3.03
Merci pour votre aide
Mais ça sert à rien d’essayer de valider ton formulaire puisque comme déjà expliqué plusieurs fois, c’est dès l’installation que ça merdoit, le plugin n’est donc pas installé, ya pas la description des tables donc ça ne risque pas de marcher correctement. Ce problème est dû au fichier de description des tables dans le dossier base/ qui est encodé avec des fins de lignes Windows pourries, j’ai l’impression. Et du coup PHP ne reconnait pas ça comme des fins de ligne et donc ça fait n’importe quoi.
Si quelqu’un se rappelle de la commande à faire pour changer l’encodage des fins de ligne...
Quelqu’un a t’il trouvé une solution pour que l’installation fonctionne et crée les tables ?
Je viens de poster une correction sur ce plugin, un seul fichier n’était pas UTF-8, et rien à voir avec le dossier base/ :
http://zone.spip.org/trac/spip-zone...
A voir si ça change quelque chose de ce côté là ?
En revanche, je ne vois pas de fichier « formidable_administrations.php » : la compatibilité avec SPIP v3 n’est peut-être pas achevée ? A vérifier si les mises à jours de la base se font bien.
À priori c’est pas un problème d’UTF mais d’encodage des fins de ligne dans le fichier de déclaration qui est dans base/. Quand j’aurais le temps je passerai un coup de « sed » dessus.
Répondre à ce message
Bonjour, j’utilise formidable avec le plugin transaction et j’ai un problème avec les mails.
En effet, formidable envoie un mail dès que l’utilisateur clique sur valider, or j’aimerais que le mail parte lorsque que le paiement est validé.
J’ai vu la méthode traiter_email_dist, comment pourrais-je l’appeler à partir du plugin transaction (quels paramètres) ?
Merci d’avance
Répondre à ce message
Bonjour,
Est-il prévu d’ajouter une fonctionnalité ’champ input type file’ (possibilité pour l’internaute d’envoyer un CV ou autre) à Formidable pour SPIP3 ?
Si non, comment créer cette fonction moi-même ?
Merci d’avance pour vos retours
Répondre à ce message
Bonjour,
J’ai un drôle de problème, lorsque j’essaie d’exporter un formulaire au format csv, j’ai une erreur bizarre :
Lors de l’enregistrement, Windows me fait poper une fenêtre avec le message suivant :
Une de mes collègues arrivent à télécharger le fichier csv, mais il est vide.
Des idées de ce qui peut causer le problème ?
J’ai désinstaller le plugin Accès Restreint, car je pensais que le problème pouvait venir de là, mais non, ce n’est pas ça.
Je suis en SPIP 2.1.12, mysql 5x
Merci de votre aide
Rebonjour,
Après plusieurs tests, je pense qu’il y a quelques choses de corrompu dans ma BD, mais je n’arrive pas à savoir quoi.
Sur le même serveur, j’ai créé un nouveau site, j’ai installé tous les plugins que j’utilise sur mon site principal. J’ai créé un formulaire tout neuf et j’ai pu exporter au format csv mes réponses.
J’ai « restaurer » ma BD avec les données de mon site principal. J’ai retesté mes formulaires et je suis de nouveau plus capable d’exporter au format csv.
Je suis vraiment bloquée... surtout que sortir les données à partir de PHPMyAdmin ce n’est pas joli et il faut tout reclasser.
Toutes les idées sont les bienvenues !
Zaa
Et est-ce qu’il y a une erreur quelque part dans les logs de SPIP ? Sinon il faudrait un accès au site qui merde, ou une copie, enfin quelque chose qui permette de reproduire le problème.
Bonjour,
J’ai fait une recherche rapide dans les logs de SPIP avec les mot « erreur » et « error » et je n’ai rien trouvé. Aurais-je dû faire un autre type de recherche ?
Ça me ferait plaisir de te donner accès au site de test, tu peux m’écrire au info a zaa.cc
Merci beaucoup
Bonjour,
Avez-vous trouvé la solution à ce problème ? Car je rencontre le même type de problème sur mon site.
Non, je n’ai pas trouvé de solution.
Par contre dans le cadre du plugin Zabonnement j’ai dû écrire un fichier .csv et c’est assez facile à produire. Voici le code que j’ai utilisé pour Zabonnement (évidememnt les tables ne sont pas les même)
C’est un fichier .html que j’ai créé dans mon dossier squelettes :
Simplifier ça donne :
Et voici un lien pour plus d’info : http://www.spip-contrib.net/Export-CSV-des-articles-pour-publication-papier#forum456043
Si tu réécris un fichier pour Formidable, n’hésite pas à le poster ! :D
Ce mon coté, j’ai trouvé la solution depuis :
Ce doit être un problème due à une récente mise à jour de Spip Bonux.
Pour faire fonctionner l’export, J’ai mis en commentaire la ligne 90 dans le fichier :
spip-bonux/inc/exporter_csv.php
A priori, il n’y a pas d’effet collatéral.
Merci yohooo ! Le fait de mettre en commentaire la ligne 90 permet de faire fonctionner l’exportation csv !
Rastapopoulos, est-ce que tu penses pouvoir fixer ça ?
Quel serveur (Apache ou autres) et quelle version de PHP ? Parc que ce bout de code est censé marcher, c’est pas forcément une solution de cacher sous le tapis.
En effet, il ne faut pas se précipiter.
J’avais un client urgent, c’est pour ça que j’ai effacer cette ligne, mais je ne le conseille pas forcement à d’autre (je garde le contenu de mes commentaires en cas de dommages collaatéraux).
Par ailleurs, je ne comprend pas trop les lignes suivantes du fichier exporter_csv.php :
Mon serveur est un Apache.
Version PHP : 5.2.6-1+lenny16
Enfin, ce forum n’est peut-être pas le bon (peut-être doit-on continuer sur celui de Spip-Bonux)
Rebonjour,
De mon côté Apache 2, PHP 5.2.17
Oui vu que ça concerne apparemment ce fichier, le mieux est sûrement de reporter l’erreur dans l’article concernant Bonux.
J’avais le même problème d’export que j’ai réglé en désactivant la ligne 90 du fichier spip-bonux/inc/exporter_csv.php. Je suis prêt à laisser quelqu’un accéder au ftp/spip si ça peut aider.
J’ai trouvé un autre problème : maintenant que l’export fonctionne, je suis étonné du contenu du csv :
- le champ email est paramétré en email (type de vérif « adresse de courriel »)
- dans le csv la colonne email se remplit bien, sauf qu’il manque le @, ce qui est un peu couillon
Dans le même esprit, le champ site web (type de vérif « URL ») est exporté comme ceci :
http://www.domaine.com (http://www.domaine.com ), en doublant le domaine.
Des pistes ?
Bonjour,
Ce problème est indépendant du problème d’export rencontré précédemment car j’ai rencontré l’un et pas l’autre.
Tu as regardé du coté de l’encodage de caractère ? Quel est le jeu de caractères de ton site ?
Bonjour,
Je confirme, lors de l’exportation de mon .csv le champs email contient les @.
Je ne pourrais te dire d’où vient le problème !
Bonne chance
Dans mes squelettes
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
.Jeu de caractères pour MySQL : UTF-8 Unicode (utf8).
Sur ecrire/ ?exec=config_lang, c’est bien déclaré en utf-8.
L’interclassement du champ texte de la table spip_formulaires_reponses_champs est utf8_general_ci
J’ai échantilloné la table spip_formulaires_reponses_champs et les email sont correctement renseignées avec un@.
Le csv ne contient pas l’@. Le problème est donc lors de l’export.
Le reste du csv est correct pour les accents.
En y pensant, quand je reçois un nom accentué dans le sujet de l’email qui envoie le formulaire, l’accent est en hiéroglyphe . J’ai ouvert le code source de l’email et j’ai : « From : = ?iso-8859-1 ? ».
En lançant une recherche sur « iso-8859-1 », j’ai trouvé toutes ces pages contenant, mais suis incapable de dire laquelle a l’impact sur mon résultat. J’ai viré les tmp car sinon je dépassais les 1500 caractères
A quoi servent ces 2 lignes de spip-bonux ?
Après passage en spip 3 et upgrade de tous les plugins, mon problème de @ manquant s’est amplifié car les emails automatiques que je reçois après que quelqu’un ait rempli un formulaire arrivent sans @.
L’export csv ne contient pas de @ non plus.
Quand je désactive MAILCRYPT du COUTEAU SUISSE, mes exports CSV de FORMIDABLE contiennent bien les @. Il y a donc un problème d’incompatibilité entre MAILCRYPT et FORMIDABLE.
J’ai signalé sur le forum de MAILCRYPT.
Quelqu’un aurait-il une idée de ce que je peux faire ?
Répondre à ce message
Bonjour,
J’ai un créé un formulaire, dans la partie administration le formulaire est bien alligné mais dans la partie publique de mon site, le formulaire n’est pas du tout alligné...
Sur quels parametres dois je agir ?
merci d’avance
FRed
Absolument rien, le formulaire s’affiche suivant vos styles CSS, le plugin ne s’occupe pas du tout de l’affichage. À vous de faire en sorte que votre thème graphique corresponde à ce que vous voulez.
Répondre à ce message
Bonjour et merci pour ce plugin,
J’ai une petite question, est-il possible de faire un liste déroulante avec le titre des articles séléctionnés ?
Merci
De quels articles sélectionnés ? Y a pas de saisies d’articles, mais tu peux t’en construire une selon le modèle des autres. Un fichier HTML qui est un squelette, et un fichier YAML qui le décrit avec les options que tu veux (options qui sont elles mêmes des saisies).
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 : |