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,
J’ai un petit soucis sur le traitement.
Dans l’email d’envoi aux destinataires, j’ai l’affichage dans l’objet du mail du nom du champ au lieu de sa valeur ex :
au lieu de
, il me semble que cela fonctionnait avant , je suis en 1.9.4.
Je crois que cela a déjà été posé comme question : y ’ a t il moyen de faire disparaître ce #@ ! de (no data entered) et le titre correspondant.
C’est bizarre. Qu’y a-t-il dans ta configuration du champ « sujet » pour le traitement « Envoyer par email » ?
Je n’ai pas compris le passage sur « (no data entered) ». Si tu parles des champs sans réponse en français, par défaut il n’y a pas d’option pour ça, mais toutes ces réponses sont entourées d’un bloc avec une classe « sans_reponse ». Tu dois donc pouvoir surcharger le squelette du mail, en laissant le code actuel mais en ajoutant une définition de styles
.sans_reponse{ display:none; }
.Bonjour RastaPopoulos et merci pour ce plugin très très utile !
Je crois rencontrer le même problème que Jacot.
Le champ « sujet » de mon formulaire est une liste de choix et dans le mail c’est la clé et non la valeur qui est transmise.
Pour la configuration du champ « sujet » j’ai utilisé l’aide mémoire, soit en l’espèce @selection_1@.
J’ignore si c’est une erreur de paramétrage de ma part, mais en tous cas ce n’est pas trop pénalisant car par contre dans le corps du message le champ « sujet » est bien accompagné de sa valeur.
Merci par avance.
Ah ok j’ai pigé donc, c’est pas le « nom du champ » mais la valeur de la clé au lieu du label humain. C’est fort probable qu’il y ait un « bug » de ce côté là car jamais apparu auparavant (j’ai toujours utilisé des input libre pour générer le sujet, jamais des listes avec choix). Donc ouais il y a un truc à corriger pour ça.
oui, c’est cela, j’avais exprimé un peu rapidement le problème.
Pour le sans réponse =no data entered, merci pour la réponse ;-)
No stress ! Le plugin est une tuerie, il me permet de laisser mes clients paramétrer leur formulaire de contact sans connaître un traître mot de html ! Merci encore pour ça.
Bonjour,
En relation avec ce sujet je cherchais à retirer l’affichage, dans l’email envoyé, des champs laissés « Sans réponse », qui souvent polluent la lecture par la présence de champs inutiles.
Voilà qui semble une réponse :
1) dupliquer le fichier _base.html du dossier plugins/saisies/saisies-vues au dossier squelettes/saisies-vues (dossier qu’on créera, le cas échéant).
2) ligne 19 : modifier la DIV et ajouter
ce qui devrait faire (si on rajoute une petite marge entre les lignes, agréable visuellement) :
L’email « respire » de nouveau, débarrassé des champs laissés vides.
Répondre à ce message
Bonjour,
J’ai un formulaire avec un champ caché qui se remplit automatiquement suivant une information récupéré du profil du visiteur. Ce champ me sert à indiquer les destinataires du mail de notification.
Malheureusement ce champ caché apparait dans le mail envoyé également au visiteur comme accusé de réception.
Comment faire pour éliminer les champs cachés dans le mail d’accusé de réception qui je pensais étaient invisibles par défaut dans l’accusé de réception tout du moins ?
Merci de votre aide.
Re,
Je précise un peu ma demande.
Je suis sous Spip 3.1.0, formidable 2.9.5, Saisies 2.5.24.
Je suis sur un espace privé avec identification de visiteur. Selon le visiteur, il a accès à une offre de service personnalisée et peut accéder à différents formulaires lui permettant de me communiquer ses informations.
Selon le visiteur, les formulaires sont adressés à différents destinataires.
Je voudrais intégrer dans le champ #BIO de la fiche auteur les adresses mails correspondantes pour cet auteur, et pouvoir les récupérer dans un champ du formulaire pour en définir les destinataires.
Le formulaire reste le même, seuls les destinataires changent selon la classification du visiteur.
J’ai donc insérer un champ caché dans le formulaire et l’ai prérempli par les infors du champ BIOgraphie de l’auteur. Ce champ comporte plusieurs adresses mails, séparés par des virgules.
Le problème est que je ne veux pas que ces adresses soient visibles dans le mail d’accusé de réception adressé à l’auteur.
Peut-on exclure de l’affichage les champs cachés pour cet email d’accusé de réception de manière argumentaire dans la balises #VOIR_SAISIES.
Ou faut-il que je créer un formulaire par type de visiteur (pas très pratique pour mes exports en csv) ou encore faut-il que je fasse un traitement pour chacun de mes formulaires reprenant champ par champ pour le mail d’accusé de réception (j’ai environ 8 formulaires différents et je sais pas comment faire pour coder ça...)
Si vous pouvez m’aider je vous remercie par avance
Quelqu’un peut-il m’aider... je ne trouves pas comment faire...
Help please ;)
Up +1
Personne pour m’aider ?
Répondre à ce message
Bonjour
je test ce plugin mais je ne vois pas a quel endroit je peux créer un champ pour que l’internaute puisse « uploader » un fichier ?
aurais je loupé quelque choses ?
jacques
Vous n’aviez rien loupé, aussi surprenant que cela puisse paraître, ce si bel outil n’est à priori toujours pas équipé de cette fonctionnalité essentielle, qu’on retrouve dans les gestionnaires de formulaire des CMS les plus courants. Cette question resurgit dans les commentaires tous les deux mois, on la repère facilement, c’est la seule qui ne reçoit jamais de réponse ^^
Bonjour,
Sur toutes mes lectures sur le sujet, ce n’est pas si simple à mettre en place apparemment.
D’une part, purement et simplement, pour coder le module de téléchargement (si quelqu’un ayant les compétences pour s’y atteler et filer un coup de main aux développeurs du plugin veux participer, je penses qu’ils seraient d’accord pour partager leurs infos... perso, j’ai pas les compétences :( )... mais également pour éviter de créer une faille de sécurité, point relativement important il me semble.
Mails il est vrai que cette option serait un réel plus.
Merci à tous les développeurs qui participent au développement de tous les plugins et de Spip.
Répondre à ce message
Autre question : est-il envisageable de faire remplir le formulaire à partir d’un lien hypertexte. La personne clique sur le lien de son mail et arrive sur le formulaire par le biais du clic : le nom, prenom etc sont alors déjà renseignés. Ce serait magique !
Existe-t-il un tutoriel à ce sujet ? Qui aurait la gentillesse de m’expliquer le processus ?
Un grand merci,
SV.
Tout à fait.
Cela signifie par contre qu’on doit disposer de ces infos avant d’envoyer le mail.
On fait alors passer les infos en variables d’environnement dans le lien :
monsite.com/mapage.html ?email=email&nom=nom&prenom=prenom etc
Cette page contient un modèle qui récupère les variables et les transmet au formulaire :
dans l’article on appelle par exemple le modèle :
<formulaire_prerempli|id_formulaire=N>
Et notre modèle formulaire_prerempli.html :
Les variables sont transmises au formulaire dans un ARRAY où on précise chaque fois le nom du champ (select_1, input_3 etc) et la valeur qu’on lui associe.
Je complète ma réponse précédente et je vais plus loin : si on dispose des infos AVANT d’envoyer le mail, c’est qu’en fait on doit les avoir quelque part dans une table (dans la table AUTEURS par exemple).
Dans ce cas il n’y a même pas besoin de faire transiter les infos par mail pour ensuite les récupérer dans l’url puisqu’on peut aller chercher tout ça directement dans le modèle grâce à la boucle qui va bien.
Il suffit alors d’envoyer juste l’identifiant de l’auteur pour le récupérer en variable d’environnement dans la page du formulaire. Cependant pour des raisons de sécurité il n’est pas forcément recommandé de faire passer l’id_auteur en « clair ». Cela permettrait aux utilisateurs, en changeant l’identifiant, d’utiliser voire de pirater le compte d’un autre. Il faut donc crypter ou hasher cet identifiant. Il y a des fonctions pour cela mais je ne les connais pas.
Peut-être quelqu’un peut-il nous éclairer sur la façon de « hasher/déhasher » une variable dans spip ?
Merci pour ces éléments.
Mais je n’y arrive pas.
J’ai créé mon fichier formulaire_prerempli.html avec ces données >>
#FORMULAIRE_FORMIDABLE#ENVid_formulaire, #ARRAYradio_1,#ENVdate,input_1, #ENVnom,input_2,#ENVprenom,input_3,#ENVadresse,input_4,#ENVcp,input_5,#ENVville,input_7,#ENVemail puis ai ajouté ceci dans mon article >> <formulaire_prerempli|id_formulaire=8>
MAIS RIEN :(
Ou me suis je planté.
Répondre à ce message
Bonjour
J’ai récemment mis à jour Spip en 3.0.22 ainsi que Formidable en 2.9.13 et je viens de m’apercevoir que mon affichage conditionnel sur les champs ne fonctionne plus : les champs conditionnés apparaissent désormais d’office alors qu’auparavant ça fonctionnait sans souci.
Quelqu’un d’autre a-t-il le même problème ?
Merci
Réponse à moi-même :
J’ai refait le formulaire et là ça marche. Complètement bizarre.
Désolé pour le bruit ;-)
Répondre à ce message
Bonjour,
concernant les boutons radios, est-il possible d’ajouter un champ « choix libre » ou la personne inscrirait ce qu’elle souhaite ? Comment procéder ?
J’essai de trouver de la doc sur ca mais je rame. Si vous pouviez me donner un début d’explication ou me dire comment faire ...?
MERCI !!!
modifie le champ et dans liste des choix possible mettre
choix 1|voiture
choix2|titi
choix3|autre
etc etc
Merci pour cette solution. Effectivement, je crée ensuite un champs qui ne s’affiche que lorsque le choix autre est coché et hop. Mais j’ai un autre souci : lorsqu’il s’agit de payer, de faire un don, alors ce système ne fonctionne pas. Le montant libre n’est pas ajouté comme variable du bouton radio >> Au moment de payer, il est indiquer 0.
Une idée ?
pas de réponse ? Je m’ajoute, +1 !
Répondre à ce message
bonjour
sauf erreur de ma part, il n’y a pas de champ de type « envoyer un document » (image, pdf, etc..)
le champ « document » fait référence aux documents de la médiathèque de Spip et non des documents du poste utilisateur du formulaire.
Y a-t-il un moyen de palier à ça ?
merci
nope
http://thread.gmane.org/gmane.comp.web.spip.user/197141/focus=197145
Répondre à ce message
Bonjour,
Formidable est un super plugin.
Il me semble qu’il serait parfait si l’on pouvait lui ajouter un peu de Web Forms et préciser le type des champs « ligne de texte »
type="tel"
ou encoretype="email"
. Les visiteurs mobiles seraient ravis...J’avais même imaginé que cela soit paramétré en fonction du type de vérification que l’on applique au champ.
Qu’en pensez-vous ?
Gros +1 !
Répondre à ce message
Correction / Modifier une réponse antérieure
Bonjour : je découvre ce plugin que j’envisage d’utiliser pour mettre en place un questionnaire en ligne. Je vais envoyer l’url de la page concernant le formulaire à x personnes...
Comment-il faut-il faire pour qu’une personne ayant rempli un formulaire puisse y revenir 1, 2, 5, 30 jours après et modifier/compléter sa réponse ?
Nécessairement lui créer un identifiant visiteur et ne rendre le questionnaire remplissable qu’après s’être identifié ? J’imagine en effet que l’identification par cookie sera périmée (ie = quelle est la durée de vie du cookie posé et/ou que faire en cas d’effacement du cookie ?)
Merci d’avance de ton éclaircissement
Bah pour que ce soit fiable faut forcément proposer le formulaire que à des gens connectés avec un compte, à mon avis.
Du coup... il faut concevoir un squelette genre « accès restreint » (qui nécessite donc une identification) ? Une fois qu’un visiteur a rempli / commencé de remplir un questionnaire, il le retrouvera automatiquement dans l’état dans lequel il l’aura laissé en partant la fois précédente et pourra poursuivre la saisie ? C’est cela ?
Si t’as activé le fait qu’ils peuvent modifier après coup ET qu’il n’y a qu’une réponse par personne dans la config du traitement Enregistrement oui. Cf aussi la discussion plus bas d’une personne qui voulait aussi permettre la modif après coup : l’autre méthode est de passer explicitement le numéro de la réponse à modifier (mais dans ce cas ça bypass la config du traitement). Le cas le plus simple est le premier, une réponse par personne et acceptation des modifs, dans ce cas ça va chercher tout seul automatiquement la dernière réponse de la personne.
Répondre à ce message
Bonjour,
Avec SPIP 3.1, le bouton supprimer toutes les réponses les met avec la puce noire, mais dans la liste des formulaires, le nombre de réponses reste inchangé.
En cliquant sur ce nombre, on arrive sur l’onglet [Toutes] qui liste toutes les réponses avec la puce noire, et l’onglet [Supprimées] n’affiche rien.
De plus, le plugin Corbeille ne liste aucune réponses alors qu’il devrait logiquement lister celles avec la puce noire, non ?
Tu peux tester en mettant
{formulaires_reponses.statut != poubelle}
dans la boucle de prive/objets/liste/formulaires.html ?Ah et sinon la Corbeille ne marche que si on l’implémente. Il n’y a jamais rien eu de mécanisme générique dans le plugin, ça fonctionne pas squelette, et donc il faut l’implémenter pour chaque objet voulu.
Du coup, j’ai fait ça : http://zone.spip.org/trac/spip-zone/changeset/95529
Le statut à prendre en compte était ’poubelle’ et non ’refuse’
En filtrant selon la suggestion de Rastapopoulos, les formulaires n’ayant que des éléments à la poubelle n’étaient plus listés
Changement de fusil d’épaule :
[(#VAL{commande}|table_objet_sql|sql_countsel{statut='paye'})]
pour compter des objets éditoriaux sans passer par une boucleRé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 : |