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,
J’ai bien vu dans la doc ci-dessus un modèle pour un mail d’accusé de réception pour l’internaute... mais comment :
- Formidable détermine à qui l’envoyer ? Comment il détermine le mail de l’internaute ? Je ne vois nul part une liaison sur un des champs du formulaire.
- comment on active cette fonction pour un formulaire ? Ou bien pour tous les formulaires ?
Merci de votre aide !
Julien
J’ai bien trouvé cette fonction avec un champ de type destinataire, pour envoyer un mail avec le contenu vers un rédacteur ou administrateur... mais vers un l’internaute qui vient de remplir ce formulaire ?
Ben c’est dans la config du traitement « envoyer par mail », il y a une case à cocher « accusé de réception » pour ça, et dans cette config on indique quel est le champ qui contient le mail du visiteur.
J’ai bien la case « Envoyer aussi un courriel à l’adresse de l’envoyeur avec un message de confirmation. » qui est cochée, mais en dessous il y a : « Sujet de l’accusé de réception » et rien sur le mail du visiteur...
Serait-ce un bug ? mais je viens de l’installer, et tout le reste marche super !
Merci de votre aide. Et bravo pour ce plugin si vous en êtes l’auteur !
Oui, j’ai bien la case cochée, mais pas de champ pour indiquer le champ qui contiendrais le mail de l’internaute.En dessous, il y a directement : « Sujet de l’accusé de réception ».
Est-ce un bug ? Mais tout le reste marche bien.
Merci de votre aide.
« Courriel de l’envoyeur : choisissez le champ qui contiendra le courriel de l’envoyeur »
Je confirme, je n’ai pas ce champ. Son affichage peut-il dépendre d’un autre réglage ? Du facteur ? Autre ?
Tu mens. :)
Je le vois dans ta capture d’écran, tout en haut. L’option qui permet de définir très clairement quel est le champ du formulaire qui contient l’email de l’envoyeur, celui qui est en train d’écrire le message dans le formulaire.
Cela ne fait que 2h que je scrute cet écran... comment puis-je ne pas avoir vu ce champ ?
Tu es bien bon de prendre (perdre ?) du temps pour nous répondre !!
Merci encore !
Et en bonus, voici un site sur les prisons fait en spip qui change un peu : www.carceropolis.fr (tu n’auras pas complètement perdu ton temps !)
Un peu lourd à charger, mais sinon carceropolis est vachement bien… Étonnant de faire ça en Spip !
Au contraire, il n’y a pas assez de sites comme cela sur SPIP.
Répondre à ce message
Bonjour,
j’ai installé le plugin formidable il marche à merveille. le seul problème c’est que lors de l’envoi du mail il affiche le message suivant : « Une erreur est survenue lors de l’envoi du courriel. » Pourtant l’inscription est bien faite dans la base de données mais les destinataires ne reçoivent pas le message. J’ai essayé d’ajouter un champ destinataires mais cela ne s’affiche pas sur le site. J’ai essayé également d’ajouter des destinataires supplémentaires ça na marche toujours pas.
Quelqu’un pourrait m’aider ?
Merci
Ça veut dire que c’est la configuration d’envoi de courriel qui n’est pas bien faite ou pas faite du tout sur ton serveur. Il faut soit avoir la fonction mail() de disponible, soit configurer un serveur SMTP à l’aide du plugin Facteur.
Pourtant j’utilise Form & table sur un site qui marche correctement pour l’envoi de courriel.
Répondre à ce message
bonsoir
voici les messages que j’ai après l’installation de formidable
1) à l’accueil de l’espace privé
Erreur dans les plugins : ecrire/C :\Program Files\EasyPHP-12.0\www\cite_du_roman/plugins/auto/formidable_1_0/formidable_autorisations.php
2) quand je cliques sur Edition/formulaires
Erreur SQL 1146
La table ’webtforliv.spip_formulaires’ n’existe pas
SELECT ’’, formulaires.id_formulaire, formulaires.titre, formulaires.identifiant FROM spip_formulaires AS
formulaires
ORDER BY formulaires.titreje suis sur spip 3
Répondre à ce message
Bonjour,
En premier lieu, un tout grand merci pour ce plugin vraiment formidable. Quelle facilité pour générer des formulaires ! J’ai deux questions.
1- La première concerne le comportement visuel des champs obligatoires.
Admettons que tous mes champs soient obligatoires et que pour chacun d’eux, j’ai encodé un message d’obligation spécifique dans l’onglet « validation ». Dans la partie publique, je tente d’envoyer le formulaire sans rien remplir.
Il commence par m’entourer tous les champs de type « ligne » ou « bloc » de texte en rouge, en ignorant les autres, et affiche une bulle contenant le texte « Please fill out this field » au niveau du premier. Je le remplis, je tente de renvoyer, la bulle s’affiche alors sur le champ ligne ou bloc suivant, avec le même message d’erreur.
Ce n’est que lorsque tous mes champs ligne ou bloc sont remplis qu’il semble se préoccuper des autres types de champs. Pour ceux-ci, il affiche toutes les erreurs qui subsistent d’un coup, avec le message personnalisé que j’ai encodé et dans le style css voulu. En un coup d’oeil, on voit ce qu’on a oublié.
En fait, j’aimerais qu’il ait ce comportement pour tous les champs, y compris de type ligne et bloc, et surtout qu’il tienne compte de mes messages personnalisés et n’affiche pas celui par défaut en anglais. Comment faire ?
2- La seconde question concerne les mails générés.
Ceux-ci reprennent le message que j’ai déterminé, suivi de tous les champs et leurs réponses en une longue colonne pas très belle. Où et comment puis-je modifier le look des mails ?
J’aimerais qu’il m’affiche chaque fois le nom du champ et la valeur encodée sur une même ligne (et idéalement - si possible - ne pas afficher le nom des groupes de champs qui fait double emploi avec la valeur que l’on y encode, qui n’est qu’un titre).
Pardon, j’ai oublié : je suis sur spip 3.0.5 (avec la version 1.3.4 du plugin, donc)
Personne ne peut m’aider pour les messages d’erreur des champs obligatoires ou bien ma question n’est pas claire ?
Arf, pour les mails, désolée : je viens de voir qu’il y a une explication dans les explications ci-dessus. #paslesbonneslunettes
Répondre à ce message
Bonsoir,
Pour un formulaire avec un item que je fais vérifier par une expression régulière, en cas d’erreur de saisie par l’internaute, s’affiche :
Je n’ai pas trouvé dans le fichier :
Formidable/lang/formidable_fr.php l’endroit où modifier cette phrase « Le format de la chaîne n’est pas valide. »
Elle se trouve certainement cachée ailleurs...
Oui mais-où ?
Merci
Luc
Dans le plugin Vérifier. Ce qui serait cool serait d’ajouter une option à ce type de vérification pour surcharger la chaîne d’erreur par défaut. Ajouter une option dans le YAML qui décrit ce type de vérification, et dans le PHP l’utiliser si elle est remplie. Bonne idée. :)
Merci...
Vu, changé et placé dans mon squelette/lang.
C’est vrai qu’une option pour changer ce message serait bien... pour ma part... je ne sais pas faire...
Luc
Répondre à ce message
Bonjour !
Grâce à ce formidable plugin, j’ai mis en place sur mon site un formulaire destiné à prendre en charge des pré-réservations. Ces réservations sont faites place par place : une personne enregistrée peut réserver 1 à n places.
Est-il possible de mettre en place un système désactivant les champs déjà cochés par les précédentes personnes ? Je n’ai pas trouvé de réponse pour cette éventuelle option. Si cela n’existe pas, est-ce une fonctionnalité envisagée ?
Merci !
Répondre à ce message
Bonjour,
J’ai du mal avec ces formulaires ils n’apparaissent toujours pas dans l’espace publique en local.
J’ai essayé avec spip 2 et spip 3 sous xampp sur wampp etc.
Toujours rien,
ne donne rien c’est désespérant !
Répondre à ce message
Bonjour, comment rendre possible à un administrateur restreint de créer un formulaire ???...
SPIP 2.1.19 [19922] / Plugin Formidable 0.6.7 [66723]
Merci.
Répondre à ce message
Bonjour,
J’ai un petit soucis sur l’utilisation du plugin et je pense que ce problème vient de ma version de php.
En effet j’ai la même installation de spip 3.0.5 (mode auto) + Formidable (faite aujourd’hui) sur deux serveurs et dans un cas mes formulaires sont vide (ie il n’y a aucun champ), pas dans l’autre.
Je n’ai aucun message d’erreur, ni à l’installation, ni lors de la création des formulaires.
les seules choses qui diffères sont :
Formulaire vide <=> formulaire OK
OS RedHat 5.8 <=> ScientificLinux 6.3
httpd 2.2.3 <=> 2.2.15
mysql 5.0.95 <=> 5.1.66
php 5.1.6 <=> 5.3.3
Y a t’il des versions mini à utiliser ? Si oui lesquelles .
Merci de votre aide.
Bonsoir
J’ai eu un problème très similaire récemment. Et je me suis aperçu qu’il s’agit d’une différence de traitement par SPIP au niveau de la balise #TEXTE* ou #TEXTE**.
Regarde dans ton squelette si tu as des * après cette balise. Fais des essais au pif et vois si ça tombe en marche.
J’ai toujours pas compris la cause origine du bug mais j’ai réussi à supprimer les conséquences.
Répondre à ce message
Forcer les valeurs des champs
Bonjour
Pendant la création d’un formulaire, il est possible d’indiquer une valeur par défaut à un champs de type texte.
Comment faire pour que cette valeur soit le résultat d’un calcul ?
J’ai un plugin perso qui fait des calculs à partir de données saisies dans FORMIDABLE. C’est le résultat du calcul que j’aimerai forcer dans un champ.
MERCI
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 : |