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
Je cherche a ce que mon formulaire, qui un champ daté, a ce que ce dernier soit rempli automatiquement par la date du jour.
J’ai essayé de mettre dans la partie Description > Valeur par défaut : #DATE mais ce champ ne semble pas être interprété par SPIP et est ré-affiché tel que.
Il y a-t-il une solution ? Merci d’avance pour votre aide.
Non ya pas de solution. Mais tu pourrais modifier la saisie « date » pour ajouter une option « Utiliser la date du jour comme date par défaut », case unique à cocher en dessous de l’input pour la valeur défaut, et si c’est activé, ne pas utiliser
#ENV{defaut}
mais#DATE
. Par exemple.Répondre à ce message
Bonjour,
j’ai créé sans problème mon premier formulaire mais pas moyen de le voir s’afficher en ligne.
dans le corps d’un article j’ai appelé la balise suivante.
formulaire|Enquête UNSS|id=1 (entre crochet bien sûr)
ou
formulaire|Enquête UNSS|id=prep_unss
et rien ne s’affiche !
Des idées ?
Peut-être qu’en l’appelant comme l’indique la doc juste au-dessus, ça marchera mieux ? Cf le chapitre « Appeler mon formulaire ». :)
Répondre à ce message
Bonjour,
j’ai installé le plugin en local sans aucun problème et il fait très bien le taf ! merci beaucoup :)
en revanche j’ai un petit soucis pour la mise en prod
j’ai lu dans les commentaires que certain avaient un peu le même soucis que moi mais la solution n’a pas fonctionné :/
les tables ne se crées pas à l’installation du plugin
je les aient importées vide de ma base local et j’ai activé le plugin ensuite
le plugin n’arrivent pas à écrire correctement dans la base lors de la création d’un formulaire (la table s’incrémente mais l’identifiant reste NULL le titre est vide...)
de plus si je modifie dans la base l’identifiant et le titre dans « formulaires_tous » il ne m’affiche aucun formulaire créé.
et j’ai eu des logs du genre ’Table ’xxx.formulaires’ n’existe pas...
je suis hébergé chez ovh
Version sql : 5.0.90
Version PHP : 5.3.8
spip 3.0.3
merci :)
PS : dans la création d’un formulaire le lien de retour « /ecrire/ ?exec=formulaire_tous » est incorrecte il manque juste un petit « s » à formulaire :p
Répondre à ce message
« 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. »
Cela ne fonctionne pas par contre pour formulaire.accuse.html cela fonctionne.
Est-ce normal ?
Tout squelette placé dans le répertoire « squelettes/ » est obligatoirement pris en priorité à celui du même nom/même chemin d’un plugin.
Ok merci cela fonctionne, je testais trop vite sans recalculer le formulaire.
désolé du bruit, et grand merci de ton prompt et précieux support Rastapopoulos
Répondre à ce message
Bonjour,
est il possible de personnaliser la valeur du bouton « VALIDER » ?
merci
Seulement en surchargeant le squelette du formulaire, je pense.
Ok merci cela fonctionne, je testais trop vite sans recalculer le formulaire.
désolé du bruit, et grand merci de ton prompt support Rastapopoulos
Répondre à ce message
Bonjour
j’ai des soucis apres installation ...
je veus créer mon formulaire ..
apres sauvegarde
j’ai cette erreur
Erreur SQL 1146
Table ’marionne_site.spip_formulaires’ doesn’t exist
SELECT id_formulaire FROM spip_formulaires WHERE identifiant = ’contact2 and id_formulaire != 0’
Merci d’avance pour votre aide
personne pour m’aider !!! svp de l’aide
je suis toujours bloquer ... avec cette erreur
j’ai essayer de desinstaller reinstaller je l’ai toujours ....
qqun aurais une idée ?
Merci d’avance
Quelle est ta version de SPI et du plugin formidable ?
SPIP 2.1.10 [17657] et Formidable 0.6.6
..
Merci pour l’aide je despere un peu lol
SVP a l’aide ... je ne comprend pas pourquoi ce plugin ne fonctionne pas sur mon site
Merci
Des sorciers vaudous expliquent que lorsqu’on supprime les lignes vides des fichiers du répertoire « base », la Baron Samedi peut éventuellement autoriser ton plugin à s’installer correctement.
Mais je n’ai pas encore compris la logique sous-jacente.
hello ...
alors j’ai trouver l’envoler trés sympa
j’ai modifier formidable_installation enlever les espaces
puis desintaller par l’interface puis reinstaller
j’ai des erreurs en moins ..
mais quand j’essaie de sauver le formulaire (avant les champs ...)
j’ai encore une erreur
Erreur SQL 1146
....
c’est du vaudous ... mais ca ne fonctionne pas encore ...
merci de ton aide en tout cas
Rrrr j’arrive vraiment pas à comprendre pourquoi les tables ne s’installent pas.
C’est quel hébergeur avec quel PHP ?
http://www.mavenhosting.com/
php 5.3.10 ...
Merci pour ton aide
c’est mavenhosting c’est du php 5.3.10 ...
au pire si tu me guide je peu créer les tables ...
Merci pour ton aide
Bonjour
Même hébergeur http://www.mavenhosting.com et même messages d’erreur.
Voici des infos sur MySQL
Serveur : Localhost via UNIX socket
Version du serveur : 5.1.63-cll
Version du protocole : 10
Jeu de caractères pour MySQL : UTF-8 Unicode (utf8)
Info sur le serveur
cpsrvd 11.32.3.19
Version du client MySQL : 4.1.22
Extension PHP : mysql
Php myadmin : Version : 3.4.10.1
Comment créer éventuellement manuellement les tables nécessaires ?
D’avance merci pour vos lumières
Odile
Ben vous pouvez toujours l’installer en local, exporter la base, et l’importer sur le serveur. Mais je ne sais pas si ça va tout résoudre car je ne sais pas si c’est uniquement à l’installation des tables que ça merde.
Et de ce que j’avais cru comprendre, ce n’est pas un problème de SQL mais de PHP qui n’importe pas les fichiers contenant les infos de déclaration des tables (donc ça risque de poser des problèmes aussi par la suite). En tout cas c’est ce qu’on avait vu avec une personne qui avait le même problème.
Il faudrait que vous regardiez les logs de SPIP au moment d’installer le plugin pour voir ce que ça dit (la personne avait des choses du genre « fichier machin.php inconnu » ou « fonction formidable_declarer_truc inconnue »).
Quant à moi, je n’arrive pas à reproduire ni en local ni sur mes serveurs, du coup je peux difficilement fouiller.
Merci pour la piste en local, je vais essayer. J’avais déjà effacé les lignes vides comme indiqué dans une précédente réponse.
L’installation est OK du plugin, mais dès que je lance la création d’un formulaire j’ai ce type de message :
Erreur SQL 1146
Table ’svtbelro_spip.spip_formulaires’ doesn’t exist
SELECT ’’, formulaires.id_formulaire, formulaires.titre, formulaires.identifiant FROM spip_formulaires AS
formulaires
ORDER BY formulaires.titrecolonne « squelette » :
./plugins/auto/formidable_1_0/prive/liste/formulaires.html
colonne « boucle » :
_formulaires
et colonne « ligne » :
6
Je vais aussi lancer la requête auprès de Maven l’hébergeur, des fois que...
Encore merci,
Odile
hello odile super on est pas seul tu me tien au courant si tu as des retours mavenhosting ...
Non mais l’installation n’est PAS OK justement. L’erreur SQL dont tu parles est après, et elle est claire : les tables nécessaire au plugin n’ont PAS été installées. Donc l’erreur n’est pas celle-là au moment de l’utiliser, mais en amont au moment d’installer. Et lors de l’installation ya pas d’erreur SQL, c’est une erreur PHP à priori. On dirait qu’il n’arrive pas à inclure les fichiers qu’il faudrait. Et donc il faut vider les logs de SPIP (dans tmp/) pour pas avoir de pollution, puis installer de zéro le plugin, et immédiatement aller fouiller les logs pour voir ce qui se dit. Si possible lire les logs de PHP ou d’Apache aussi (sur le serveur).
sinon en attendant tu pourrais nous donner les action sql a faire coté phpmyadmin ?
Merci
Bonjour
Et oui, on est au moins deux ...
En attendant de voir ça en local, mon hébergeur MavenHosting m’a précisé que le serveur est avec PHP version 5.2.17, et qu’il pouvait me passer en 5.3.13.
J’attends une réponse plus précise de Mavenhosting sur ce problème...peut être que...
Odile
Bonjour
J’ai donc désinstallé le plugin, vidé les log dans temp, et refait l’installation.
Voici le contenu du fichier mysql.log
et voici le contenu du fichier spip.log
J’espère que cela te permettra, Rasta Popoulos, de nous aider à faire fonctionner le plugin.
Bonne soirée
Odile
PS : je vais tester l’installation locale puis le transfert de base ce week-end
hello avez vous des news ??
Merci
Bonjour
Super, la solution de Rasta Popoulos d’installer en local est bonne : le plugin formidable fonctionne avec l’hébergeur maven hosting.
Pour cela, il faut utiliser par exemple EasyPHP , puis utiliser phpmyadmin pour importer/exporter les bases
Sinon, l’hébergeur m’avait proposer de changer la version de PHP, mais n’avait pas de réponse pour le plugin en lui même.
Odile
hello
moi le site est en production ... c’est difficle pour moi de coupé pour remettre la base ...
RastaPopoulos
tu pourrais me donner les requettes a faire coté phpmyadmin ? car ca me premettrai de régler le soucis ..
Merci
Mais je n’ai pas de requêtes SQL à te donner : c’est SPIP qui les génère ! Sinon tu les trouverais directement dans les fichiers du plugin. Là je vais pas m’amuser à recomposer champ par champ la requête SQL à faire... Tu en as une partie dans le dossier « base/ » (la description de chaque champ) mais une autre partie est générée par SPIP (les clés primaires ou pas, etc).
Mais tu peux très bien l’installer en local et ne sauver/restaurer que telle ou telle table hein, et donc pas toute la base mais seulement les tables du plugin.
Cela dit, ça reste un pis-aller, je ne comprends toujours pas d’où vient le vrai problème (et est-ce seulement sur telle ou telle version de PHP ?).
ok merci je comprend
c’est pas grave
a+
desoler une derniere question :
j’installe formidable en local puis je fais mon frmulaire ?
ou je peu installer formidable remettre ma base sur le serveur et utiliser formidable ?
Merci
Ça je n’en sais rien puisque je n’arrive pas à reproduire le bug. D’après Odile, il semblerait que le plugin fonctionne une fois que les tables sont bien présentes.
Bonsoir,
En local avec easyPhp j’ai installé spip3, formidable et tous les plugins nécessaires à formidable. Je n’ai pas eu besoin de créer un formulaire.
Toujours en local par EsayPhp il faut ouvrir PhpMyadmin. Là, il y a plein de tables...clique sur celles commençant spip_formulaires (ça dépend aussi du nom racine donné à ta base, mais il y aura toujours le nom formulaires pour celles qui nous intéressent) et pour chacune clique sur exporter la base (dans le menu en haut)....Là on aura un fichier à enregistrer sur ton ordi.
Sur l’hébergeur MavenHosting passe aussi par PhpMyadmin et dans la base en ligne de ton site spip,importe ces fichiers en cliquant sur importer, et en récupérant les fichiers sur ton ordi.
A présent je peux utiliser Formidable...qui est vraiment un super plugin pour créer facilement des formulaires.
Odile
Bonsoir,
Après avoir installé le plugin en local et vérifié que tout fonctionnait, je l’ai mis en ligne et je me suis retrouvé avec le même problème : les tables ne se sont pas créer lors de l’activation.
J’ai effectué la même manip qu’Odile (faire un export en local et import en ligne des tables spip_formulaires*) et ça ne fonctionne toujours pas :/
Voici le message d’erreur après la tentative de création du formulaire :
Warning : Invalid argument supplied for foreach() in /*****/*****/www/ecrire/inc/modifier.php on line 112
je suis chez ovh
Version sql : 5.0.90
Version PHP : 5.3.8
merci :)
Répondre à ce message
Bonjour à tous,
Je souhaiterai modifier la mention « [Obligatoire] » lorsque un champ doit être impérativement rempli par un astérisque afin d’améliorer la mise en page de mes formulaires.
Quelqu’un pourrait-il me donner le nom des fichiers à modifier ainsi que les dossiers où se situent les fichiers à modifier (Plugins formidable ou autre plugin).
Merci de votre aide,
Philippe.
Ya un champ de config pour ça dans chaque champ de formidable. Ce qui est chiant pour l’instant c’est qu’il n’y a que la surcharge champ par champ, par globale. Mais c’est possible.
Attention tout de même : un astérisque c’est rarement très accessible comme manière d’indiquer que c’est obligatoire. Ou alors faut une légende explicite au début du formulaire, mais après quand un lecteur d’écran lit chaque champ, ce n’est malgré tout pas très clair.
Merci Rastapopoulos,
J’ai bien saisi que l’on pouvez décider pour chaque champs s’il est obligatoire ou non, mais je souhaite faire apparaitre un astérisque à la place de la mention [obligatoire] qui apparait et préciser en début, ou fin, de formulaire : * champ obligatoire.
D’où ma première question quel fichier modifier pour faire apparaitre * à la place de obligatoire ?
Je le répète : il y a un champ de config pour ça dans chaque saisie. Dans l’onglet « affichage » sûrement, puisque c’est une question d’affichage. « Indication d’obligation : vous pouvez modifier l’indication d’obligation par défaut ».
Désolé RastaPopoulos j’avais pas bien compris et un grand merci !!!!
Répondre à ce message
Comment vider un formulaire rapidement ?
Après avoir tester le formulaire, je voudrai le mettre en service, mais il contient toutes mes valeurs de test... Alors comment le purger simplement ?
Je me réponds...
Tout simplement en allant dans la base de données et en vidant la table ...
Je cherchais un bouton dans l’interface privé, mais le delete fonctionne aussi bien :)
Répondre à ce message
Pour toutes celles et tous ceux qui chercheraient à afficher les résultats enregistrés via un de leur formulaire, en une sort de sondage, il est possible de l’obtenir en partie privée via l’insertion de la balise suivante :
<formulaireXX|analyse>
, XX étant le n° du formulaire (dans l’ordre de création dans la base).Le squelette affiché est basé sur le modèle : plugins/auto/formidable/modeles/formulaire_analyse.html
Encore merci RastaPopoulos, pour ton aide via IRC.
Répondre à ce message
Bonjour et merci pour cet excellent plugin.
En Spip 2.1.14, Formidable 0.6.6 et Saisies 1.24.2, je rencontre un souci après ajout de champ avec des erreurs du type :
Quelqu’un aurait une idée ?
Euh je sais pas d’où t’arrives à avoir ce comportement, parce que des squelettes avec des majuscules dans le nom, il n’y en a ni dans Formidable, ni dans Saisies (où se trouvent ces saisies). Et encore moins avec un espace au milieu comme pour « Case unique ». On a l’impression que ça cherche le squelette mais en donnant le nom humain (celui affiché pour l’utilisateur).
Ceci dit, je n’ai ça ni en 2.1 ni en 3.0 chez moi.
Merci pour le retour.
Pour info, j’observe ce comportement sur un serveur local tournant sous Windows avec Apache.
Je ne parviens pas à le reproduire sous un autre environnement, et je ne parviens pas à l’expliquer non plus ...
J’ai trouvé la nature du problème qui existe sous IE7 et IE8.
C’est bien le texte qui se trouve entre les balises
<button ...>
et</button>
qui est transmis par IE au lieu de la « value »Ce comportement est lié au plugin « Saisies » pas à « Formidable »
c.f. : http://www.w3schools.com/tags/att_button_value.asp
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 : |