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
bonsoir
j’ai installé Formidable depuis peu sur un site d’école en vue de créer un formulaire permettant à des élèves de créer des fiches de lecture.
Le formulaire s’affiche, la saisie des données et ok, MAIS :
- après validation, le message prévu s’affiche avec le titre des champs accompagnés de « sans réponse »
- comment faire apparaître instantanément sur le site public les contenus de ces formulaires ?
pour l’instant je fais des copier-coller des résultats en espace privé dans un article dédié. C’est propre mais fastidieux.
voir ici : http://ecole.cadou.free.fr/spip.php?article321
merci !
Pas normal, tu as sélectionné quoi dans la config du formulaire pour ce qui doit être affiché après validation ?
Il y a un modèle pour afficher les réponses. Dans un squelette tu peux donc faire une boucle sur les réponses à ce formulaire et utiliser ce modèle en lui donnant l’identifiant de chaque réponse.
bon, j’ai viré l’affichage après saisie du formulaire puisque j’obtiens des « sans réponse » ou un truc du genre.
Par contre, dans l’espace privé, mes résultats de formulaire apparaissent comme « publié en ligne ».
Je veux bien, mais où ?
Où se trouve le modèle pour l’affichage dont tu parles ?
une petite ligne de code serait la bienvenue pour démarrer les fameuses boucles sur les réponses car là, vraiment, je ne sais plus faire.
merci, merci, merci d’avance !
http://zone.spip.org/trac/spip-zone/browser/_plugins_/formidable/trunk/modeles/formulaires_reponse.html
Répondre à ce message
Bien le bonjour,
Ce petit mot pour connaître la raison du non chargement du css dans la version 1.3.3.
A noter que j’ai intégré le formulaire dans le contenu sous la forme
, qu’il apparait bien, qu’il fonctionne... mais non formaté.
Mon associé à installé la version 1.1.1 sur un site, les css sont ok. Tous les deux sous SPIP3.
Pensez-vous intégrer une prévisualisation ?
Bravo en tout cas pour le boulot !
De quelles CSS tu parles ? Le plugin n’intègre absolument pas de CSS, c’est ton site, ton thème qui gère le graphisme de ton site. Ce plugin ajoute une fonctionnalité, ça te génère tel ou tel HTML, mais c’est à toi de le styler comme tu veux ensuite.
Enfin... « LE » styler... styler tes formulaires en général quoi. Le plugin génère des formulaires avec exactement la même convention html/css que ceux fournis par SPIP. Donc c’est pas spécialement styler ce que génère ce plugin.
Il suffit donc de gérer .formulaire_spip {} ?
Si tu veux que tous tes formulaires aient une cohérence oui, il suffit de gérer la structure commune.
Après si tu veux explicitement les styler différemment, ya la classe commune « formulaire_formidable » dessus. Et si encore plus précisément tu veux styler UN formulaire précis différemment, ya la classe « formulaire_*identifiant* » aussi.
Formidable !!
Juste une chose : et pour la prévisualisation (comme dans spip-contrib !)
Merci beaucoup, super boulot.
Ya pas de prévisualisation, c’est pas un formulaire de forum. Ça pourrait être une fonctionnalité supplémentaire... à ajouter dans la todolist... :)
Répondre à ce message
bonjour,
est il possible de mettre un champ pour attaché un fichier au formulaire ?
j’ai regardé mais pas trouvé
merci de votre réponse
Non, pas pour l’instant. Ça fait partie des choses prévues depuis le début, mais j’aime pas faire à l’arrache et c’est pas facile de le faire proprement (cad en gardant en mémoire le fichier téléchargé s’il y a eu des erreurs dans d’autres champs).
merci pour ta réponse rapide.
je vais donc être obligé de passer sur un autre plugin
Quand l’amélioration sera faite puis je être prévenu car j’aime moins le plugin que je vais utiliser.
Bonne journée
Répondre à ce message
Bonsoir
Je viens de creer mon formulaire travail avec l’identifiant work pour un sondage. J’ai utilisé le code
<formulaire><formulaire|travail|id=3></formulaire>
et le code<formulaire|travail|id=3></formulaire>
pour l’insérer dans le texte d’un article que j’ai créé.Mais rien n’apparaît dans l’espace public.Que dois-je faire pour l’insérer dans un article ?
Bonjour
Voici mon code
Merci de m’aider
Ce n’est pas du tout ça. La documentation est juste au-dessus dans le paragraphe « Appeler mon formulaire ». :)
Répondre à ce message
Bonsoir
Je viens d’installer le plugin du formulaire pour un sondage.Après la configuration de mon formulaire travail avec identifiant work.
J’ai placé le code
dans le squelette article de mon site.
Mais rien ne s’affiche. Que dois-je faire ?
Aidez moi
Cordialement
Tu as oublié d’entourer ton code de la balise
<code>
ou de la balise<cadre>
, donc on ne peut pas lire.Répondre à ce message
Bonjour à toutes et tous,
je travaille sur un formulaire qui a pour objectif de permettre la publication d’annonces. Dans ce formulaire, j’ai un champ « date de fin de publication ». Sur ma page qui liste les annonces, je voudrais pouvoir les trier par date de fin de publication, et sur cette même page faire apparaître en grisée les annonces dont la date est dépassée.
Je me demande si c’est possible dans la mesure où les champs du formulaire ne représentent pas un champ dans la base de données. Du coup je ne voit pas très bien comment formuler une requête qui me permettrai de trier...
merci pour vos reponses
Ce plugin n’a jamais eu pour but de créer de nouveaux « faux objets » pour les utiliser comme une table classique. Il sert avant tout à faire des questionnaires, sondages ou formulaires de contact.
L’enregistrement par défaut est adapté pour faire des stats de sondage par exemple, mais pas du tout pour requêter directement dessus afin de sortir facilement du contenu ou de faire des tris particuliers.
Cependant je crois que quelqu’un avait rajouté des critères d’aide tirés de F&T :
{tri_selon_reponse input_3}
par exemple, tu peux essayer.merci pour la rapidité de la réponse. Je ne trouve rien relatif au critère d’aide auquel tu fais allusion. Est-ce que tu aurais un lien à me donner ?
merci
Ben... mon message. Tu as testé ? Avec le bon nom de champ par rapport à celui que tu veux bien sûr. Le code est là :
http://zone.spip.org/trac/spip-zone/browser/_plugins_/formidable/trunk/public/formidable_criteres.php
(tri_selon_donnee c’est pour compat, c’est tri_selon_reponse maintenant)
ah super ça marche. C’est juste que pendant tout un moment j’essayai de trier sur la date mais que dans la conf de mon formulaire j’avais demandé à ce que la date soit au format datetime de sql, ce qui empechait le tri. J’ai viré ce traitement et maintenant ça marche nikel, merci beaucoup !!!
Répondre à ce message
Je suis en fin de production d’un site, et je n’arrive décidément pas à trouver comment avoir la main sur le date-picker...
Comment peut-on paramétrer l’affichage du calendrier ?
En vous remerciant
Faut insérer la CSS de jQuery UI, je suppose (c’est fourni par SPIP 3). Puis personnaliser les couleurs. Enfin c’est du CSS quoi.
J’en étais à cette conclusion, quand après quelques heures de recherche et de tests (infructueux) je me suis demandé si 1) j’étais le seul à avoir cette « présentation », 2) où sont donc les class et CSS ?
Je suis sur SPIP 3...
http://zone.spip.org/trac/spip-zone/browser/_core_/plugins/jquery_ui/css
Donc « css/jquery-ui.css » et « css/jquery.ui.datepicker.css ».
Répondre à ce message
Bonjour à tous.
J’ai installé ce plugin hier sur mon spip qui est en version 3.
J’ai généré un petit formulaire de base pour tester, y a aucun problème pour le moment, je reçois meme un email.
La ou je bloque, mais alors complètement, c’est à cette étape :
Comment faire pour faire apparaitre le lien du formulaire sur mon site public dans une rubrique que j’aurais appeler « FORMULAIRES » (car il y en aura plusieurs dans cette rubrique).
Je sèche totalement. google ne m’a pas aidé sur ce coup là, et bien évidement, je précise que j’y connais absolument rien en développement web. Parler moi d’architecture réseaux, d’administration client/serveur, etc, pas de probleme, mais dev web j’ai du mal :-(
Please help me, j’imagine que c’est d’une évidence pour vous
Je me réponds à moi meme.
Je suis tombé sur ce plugin plugin Forms et ce passage m’a interpellé :
J’ai donc compris qu’il fallait tout bêtement créer un article et dans le corp du texte ajouter la balise :
Par contre afficher le formulaire dans un squelette, et le mettre en forme, je ne trouve toujours pas :-(
Il y a une différence entre insérer le formulaire quelque part sur le site, auquel cas tu as la doc au-dessus avec les deux méthodes (soit dans un contenu soit en squelette), et faire un lien vers le bon endroit dans tes menus.
Pour ce point, pas de rapport avec ce plugin, c’est comme n’importe quoi d’autre, il faut connaître le langage de squelette de SPIP (la doc est sur spip.net) ou bien en utilisant le plugin Menus si tu veux le faire à la souris dans l’interface.
Si tu as insérer ton formulaire dans un article, ben tu fais un lien vers cet article. Et si tu as mis ton formulaire dans une page quelconque (page=truc) et bien tu fais un lien sur cette page.
Répondre à ce message
Je suis en SPIP 3.0.5 avec easyPHP en local.
J’ai le message suivant dans l’espace privé :
Strict Standards : Only variables should be passed by reference in C :\Program Files (x86)\EasyPHP-12.1-AVCP\www\plugins\formidable_1_0\formulaires\formidable.php on line 101
quand je crée et quand j’utilise le plugin
Répondre à ce message
Bonjour,
à quel endroit peut-on configurer l’email de réponse de l’accusé de réception. En effet j’ai des utilisateurs qui répondent à l’accusé de réception, mais la personne qui traite les emails du formulaire du site n’est celle du webdesigner.
Je vous remercie par avance.
Je rejoins cette question car moi aussi je suis gênée par le choix de ne pas faire figurer l’email de l’envoyeur dans la construction des messages.
Cela génère des erreurs dans les réponses qui se font ensuite via les logiciels de messagerie des uns et des autres et la plupart du temps, c’est moi (en tant que webmaster) qui reçoit ces échanges.
Typiquement, l’email reçu par mon client est construit ainsi :
Demande de devis depuis le site Truc-Muche
nom du visiteur
<adresse du webmaster>
Et cette ligne est reprise dans la réponse qui lui est envoyée par mon client.
De : nom du visiteur [mailto:adresse du webmaster]
Envoyé : vendredi 14 septembre 2012 13:27
À : destinataires
Objet : Demande de devis depuis le site Truc-Muche
Dans email.php, j’ai relevé ces lignes
puis plus loin
Que faire pour que ce soit bien l’email de l’envoyeur qui figure sur la ligne From ?
Merci d’avance
C’est un hack effectivement, mais ce n’est pas non plus normal que les clients de courriels dont tu parles aient ce comportement. Si tu fais « Répondre » dans n’importe quel client mail, c’est censé toujours prendre le contenu de « Reply-To » en priorité au contenu de « From » pour remplir les destinataires de la réponse.
Dans la dernière version de Formidable, il y a cependant une option dans la config du traitement email pour forcer l’utilisation du bon mail dans le From.
Merci pour ta réponse RastaPopoulos. Ce site est en SPIP 2.1.16. J’imagine que la version de Formidable dont tu parles est pour Spip 3.
Je pourrai modifier cela lors de la prochaine opération de mise à jour sur ce site.
Merci encore !
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 : |