Formidable, le générateur de formulaires

Un générateur de formulaires facilement configurable pour les non-informaticiennes et facilement extensible pour les développeur⋅euses.

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).

Options possible comme troisième argument de #FORMULAIRE_FORMIDABLE
Nom de l’optionFonctionType
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 destinataires
formulaire_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)

Discussion

811 discussions

  • 1

    Bonjour, merci pour l’excellent plugin qui permet de créer simplement des formulaires complexes.
    Est-il possible de donner le droit à des administrateurs restreints de créer et modifier un formulaire ?
    Si oui, quelle est la procédure à effectuer ?

    • Ce n’est pas interfacé mais je crois que quelqu’un a ajouté ça en option à rajouter dans son mes_options.php (ou monplugin_options.php dans un plugin).

      Il faut mettre ça je crois :

      $GLOBALS['formulaires']['autoriser_admin_restreint'] = true;

      Ce n’est pas forcément super pérenne car ce n’est pas très bien d’utiliser des variables globales, mais en attendant ça devrait marcher.

    Répondre à ce message

  • 13
    Cédric J

    Bonjour,

    Depuis la mise à jour du plugin (1.3.6 -> 1.3.8) sous SPIP 3.0.14, lorsque je créé un nouveau formulaire à partir du plugin « Formidable », j’ai une erreur générique (« Erreur ») renvoyée par le plugin.
    Le problème ne se pose pas lors de la modification d’un formulaire existant.

    Après avoir rétrogradé le plugin vers la version précédemment utilisée (1.3.6), le problème ne se pose plus.

    Avez-vous une piste d’explication ?

    Merci d’avance.

    • Mmmh aucune de ces deux versions n’a un rapport avec la version actuelle du plugin qui est 1.8.6. Es-tu sûr d’être à jour et/ou de parler du bon plugin ?

    • Cédric J

      Au temps pour moi, je me suis emmêlé les pinceaux avec les numéros de versions.
      La mise à jour a été effectuée à partir de la version 1.3.6 du plugin vers la version 1.8.6.

      Peut-être le saut de plusieurs versions qui a occasionné un soucis.

    • Entre ces versions, il y a eu des modifs de champs dans la base, es-tu passé par la page d’admin des plugins pour lancer les mises à jour de base ? Peut-être que certaines ne se sont pas faites ou mal.

    • Cédric J

      Oui bien je suis passé par la page de gestion des plugins dans le backoffice (/ecrire/ ?exec=admin_plugin).
      De mémoire, un message SPIP a du me confirmer la mise à jour du plugin vers 1.8.6.
      Après, je ne sais pas s’il existe une procédure manuelle de mise à jour ?

    • Cédric J

      @RastaPopoulos : si le problème provient bien d’un saut de version trop important, la solution est peut-être de migrer version par version ? si tel est le cas, comment récupérer les versions intermédiaires, y a-t-il un dépôt d’archives ?
      Merci d’avance.

    • Il n’y a pas de raisons, toutes les mises à jour sont jouées l’une à la suite de l’autre.

      Ton erreur « Erreur », c’est à la création, dans le tout premier formulaire ?

      Il faudrait pouvoir tracer. Au moins regarder s’il y a des choses dans log/mysql.log et log/spip.log, en les lisant immédiatement après validation du formulaire et affichage de l’erreur.

    • Cédric J

      Merci de ta réponse.

      En reproduisant l’action de création de formulaire, les 2 fichiers de log renvoient la même erreur :
      ERREUR : Unknown column ’date_creation’ in ’field list’ - INSERT INTO spip_formulaires (date_creation) VALUES (’2014-01-31 10:06:01’)

      En regardant dans la base de données, le champ correspondant se nomme « date_crea », et non « date_creation ».
      L’erreur doit provenir de là.
      Ce champ a-t-il été renommé depuis la version 1.3.6 ?

    • Ah super, donc ça provient de la toute toute dernière modification du plugin, fait par nicod. Car il avait mis date_crea au départ, puis il a changé, mais il a dû oublier d’ajouter la mise à jour, et non seulement pour ceux qui installaient à zéro ! Il faut corriger ça maintenant qu’on sait où c’est.

    • Voilà :
      http://zone.spip.org/trac/spip-zone/changeset/80347

      Soit tu l’as par SVN et tu peux faire update tout de suite, soit tu attends le prochaine zippage, et tu me dis si ça marche. :)

    • Cédric J

      Egalement ravi d’avoir pu aider à identifier le problème et à faire corriger le plugin, qui, soit dit en passant, est d’une excellente réalisation. :-)

      Quelle est la fréquence de génération des ZIP ? quotidienne ?

    • Toutes les heures, si le dossier du code a changé.

    • Cédric J

      J’ai récupéré la nouvelle version du ZIP, et remplacé l’ancienne version 1.3.6.

      Après chargement de la page de gestion des plugins, j’ai bien le message :
      Installation du plugin Formidable
      MAJ 0.5.5 .
      Mise à jour réussie

      Après vérification dans la base de données, le champ « date_crea » a bien été renommé en « date_creation ».

      Après nouvel essai de création de formulaire, le processus aboutit correctement, il n’y a plus d’erreur.

      Merci de ta réactivité et du temps passé.

    • Mea maxima culpa.
      C’est de ma faute, désolé, merci RastaPopoulos d’avoir réagi aussi vite.

    Répondre à ce message

  • 1

    Bonjour, existe-t-il un moyen de vider un formulaire ? Une fois télécharger, effacer les réponses d’un clic serait génial ! MERCI !!

    Répondre à ce message

  • 1

    Comment afficher les résultat des inscrits au public en ligne ?

    Répondre à ce message

  • Bonjour,
    Est-il possible de proposer via le champ « sélecteur d’article » une liste d’articles parmi lesquels l’internaute choisira 1 ou plusieurs réponses ?
    Cela m’arrangerait bien mais je n’arrive pas à sélectionner + d’un article dans la config du champ.

    Je ne comprends pas bien à quoi sert cette option de sélecteur si on ne peut pas proposer plusieurs choix.

    Merci !
    dd

    Répondre à ce message

  • 4

    Bonjour,

    Est-il possible de proposer d’ajouter un document avec ce formulaire ?

    D’avance merci.

    Super boulot pour ce plugin.

    • Non, toujours pas, c’est dans la todo list, mais il faut avoir le temps de le faire proprement.

    • Merci pour votre réponse.
      Ceci n’enlève rien à la qualité de ce plugin, encore beau travail.

    • Bonjour

      La possibilité de mettre une pièce jointe serait vraiment un plus.

      Bravo déjà pour ce plugin

    • Bonjour,

      ah c’est vrai que ça sera top ... la cerise sur le gâteau :-)

    Répondre à ce message

  • 4

    Bonjour,

    Je voudrais transmettre des valeurs dans les boutons radios.
    Quel est le bon format ?
    Je teste un truc du genre

    #FORMULAIRE_FORMIDABLE{2, #ARRAY{
                            radio_1, {Un|Une,Deux|Deux}
                            }}

    et ses variantes, et rien ne fonctionne.

    Merci pour l’aide.

    • Comme indiqué plus haut, le tableau sert à préremplir des champs avec des valeurs, et non pas à donner des valeurs possibles.

    • J’ai bien compris ce point.
      Une et Deux sont des valeurs, variables, que je récupère de mon article, genre #DATE....

    • Ben non, tu n’as pas bien compris ce point. :)

      Puisqu’un bouton radio ne peut avoir qu’une seule valeur. Et une valeur, pas une valeur+le nom humain, ce à quoi ressemble ta chaîne donnée en paramètre.

      Là tu préremplis « radio_1 » avec la chaîne « Un|Une,Deux|Deux ». Mais il est peu probable que tu ais un des choix radios ayant cette valeur-là.

      Tu confonds préremplissage de valeur avec listage des choix possibles. La chaîne que tu donnes « ressemble » à une liste de choix possible (mais ce n’est pas ce format là non plus en vrai). Mais ça n’existe pas comme fonctionnalité ça.

      Le tableau donné en deuxième paramètre sert uniquement à préremplir les valeurs déjà remplies (pour un text, hidden, textarea, etc) ou déjà cochées (pour une checkbox ou un radio).

      Si par exemple dans la configuration du bouton radio tu as mis :

      un|Premier choix
      deux|Deuxième choix
      trois|Troisème choix

      Alors il est possible de préremplir avec #ARRAY{radio_1, trois} en paramètre de l’appel. Ce qui cochera par défaut ce bouton-là.

    • OK, je reconnais platement mon erreur de lecture.

    Répondre à ce message

  • 1
    Keita Siriman

    Dans le cas où je veux récupérer dans la bdd, est ce que Formidable prévoit une récupération plus facile ou je dois utiliser Phpmyadmin pour le faire ?

    • Ça dépend de ce que tu veux faire, mais de mémoire je crois que formidable propose l’export des réponses d’un formulaire dans le format csv (si tu as choisit l’option d’enregistrer les réponses en base , évidement ... ;-) ).

      sinon je crois que les réponses sont exploitables via une boucle aussi dans des squelettes ...

    Répondre à ce message

  • 2

    Bonjour,

    Comment puis-je agir sur le style des formulaires ?

    Merci

    JLG

    • Avec une feuille de styles CSS. Mais pas spécialement pour ce plugin, pour tous les formulaires issus de SPIP, puisque ce plugin génère la même structure HTML/classes.

    • Merci Rasta,

      En effet, mais je comprenais pas le nom des classes générées.
      Là, c’est bon j’ai trouvé en tapant sur
      .formulaire_formidable li
      .explication
      .reponse_formulaire

      Merci pour la réponse et très bon plugin au passage.

    Répondre à ce message

  • 1

    Bonjour tout le monde et merci pour ce plugin qui porte bien son nom : formidable :)
    Je l’ai installé et mon formulaire marche très bien sauf un petit bug que je rencontre.
    Quand je valide le formulaire j’ai ce message d’erreur : « Une erreur est survenue lors de l’envoi du courriel. » alors que je reçois bien le mail . Au lieu de m’afficher le message à l’utilisateur après l’envoi d’un formulaire valide ( exemple : Merci de nous avoir contacté .... bla bla bla ) , il me balance ce méssage d’érreur .
    Qu’est ce qui bloque à votre avis ? mille merci d’avance

    • Tu as activé seulement le traitement mail ou aussi celui d’enregistrement ? Il se peut que le premier ait marché mais pas le second ce qui a ajouté un message d’erreur. Mais je ne sais pas pourquoi l’enregistrement aurait merdé par contre…

    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 :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom