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

812 discussions

  • 1

    Bonjour,
    A tout hasard, le plugin semble avoir un petit défaut sur Opera (V 11.60). Dans l’espace public, le petit calendrier associé aux champs date est complètement décalé lorsqu’on l’ouvre (en fait, on le voit à peine : il vient se coller en marge négative tout en haut à gauche). Pas de problème sur IE8, Safari4, Firefox9...

    • Et dans l’espace privé il marche sous le même navigateur ? Si oui, dans ce cas ça aurait plus à voir avec tes CSS publiques, non ?

    Répondre à ce message

  • 4

    Salut,

    Bravo et merci pour cette contrib. Il est super bien fait et très efficace.

    Existe-t-il un moyen pour récupérer les infos du formulaire en csv.
    J’ai fait un formulaire d’inscription pour des stages. Et ce que je récupère, je voudrais pouvoir exploiter les infos sans avoir à les retaper. Car je dois générer des conventions sur la base des inscriptions.

    Peut-être dois-je passer par un autre plugin. Le quel ?

    Cordialement

    • Ben non, faut sélectionner le traitement d’enregistrement en base, et quand tu vas voir les réponses, tu as un bouton « Exporter les réponses » dans la colonne. :)

    • Bonjour,

      l’export csv n’est pas reconnu par excel il met tous les champs dans la même case, par contre avec open office calc on peut paramètrer pour que cela marche
      Un problème avec excel ???

    • Aucune idée, je ne connais pas Excel. Si quelqu’un a une solution, qu’il la partage pour corriger éventuellement le code.

    • je crois avoir trouvé :il faut ouvrir le fichier avec excel puis sélectionner la première colonne et utiliser le menu « données »>« »convertir"

      Voila

    Répondre à ce message

  • 6

    Bonjour,

    En voulant faire un premier test de ce plugins de formulaire qui me semble plein de promesse, j’ai eu ce message d’erreur :

    Parse error : syntax error, unexpected ’=’, expecting ’)’ in /mnt/154/sdd/e/9/ouard.archi/plugins/auto/verifier/inc/verifier.php on line 16

    La version de mon plugin verifier est : 0.1.12
    Et pour formidable la : 0.6.5

    Je suis sous SPIP SPIP 2.1.12

    Auriez vous une idée de comment je pourrais résoudre ce problème ?

    Cordialement,
    Thomas.

    • Je n’ai pas d’erreur de la sorte lorsque je vérifie la syntaxe de ce fichier PHP. Quelle est le contenu de ta ligne 16 ? Et quelle version de PHP ?

    • C’est nickel. Merci pour ton aide précieuse, la question sur la version de php m’a aiguillé sur des problèmes courant avec les sites hébergés sous free.

      J’ai ajouté un .htaccess à la racine avec

      <ifDefine Free>
       PHP
      </ifDefine>

      Et voilà ça fonctionne. Deux cerveaux valent mieux qu’un. :)

      Encore merci.
      Cordialement,
      Thomas.

    • Bonjour
      Tout d’abord je ne suis qu’un pauvre bidouilleur, incapable d’écrire ou de comprendre la moindre ligne de code .
      Je fais des essais de « Formidable » dans un site hébergé par Free,et j’ai le même message d’erreur que celui que vous signaliez le 1er Février .
      j’ai lu les messages suivants, j’ai un peu fouillé ailleurs, j’ai pris mon courage à deux mains et :
      j’ai recopié le bout de code que vous donnez plus haut, dans le bloc note, je l’ai enregistré en « truc.htaccess », que j’ai transféré à la racine de mon site et là je l’ai renommé en .htaccess.
      Quand je veux visiter ce site, Free me renvoie : Erreur 500 - Erreur interne du serveur
      Si quelqu’un peut quelque chose (de simple) pour moi merci
      Jean

    • Une erreur interne est une erreur du serveur web (ici Apache). Ce type d’erreur n’est pas critique (puisque le serveur continue de tourner et averti le navigateur qu’une erreur a àté rencontrée) mais bloquante pour le domaine (car le serveur web ne peut pas honorer les requêtes et servir les pages) ; c’est typiquement le cas avec certaines erreurs dans le fichier de configuration...
      Peux-tu poster ici le contenu de ton .htaccess ici afin qu’on voit où se situe le problème ?

    • Il faut PHP 5 pour utiliser ce plugin. Je crois d’ailleurs qu’il manque ce chiffre dans le code de Thomas. Et ya pas besoin du « if define » si tu sais déjà que t’es sûr Free. Faut juste ajouter « PHP 5 » dans le fichier, me semble-t-il.

    • Le « pauvre bidouilleur » vous dit Merci
      On dirait que ça marche,

      J’ai donc rajouté un « 5 » comme conseillé mais je n’ai pas touché au reste, je me connecte et j’ai fait une première tentative de formulaire qui semble marcher (pas le message d’erreur initial.
      Merci encore à tous
      Jean

    Répondre à ce message

  • 2

    Encore bonjour !

    En ce moment tout fonctionne, sauf que l’icône pour déplacer les éléments du formulaire n’apparaissent pas lorsque je modifie un formulaire. Quand je passe au dessus d’un élément du formulaire, il y a seulement les icône pour (1)configurer, (2)dupliquer et (3)supprimer qui apparaissent.

    Donc y a-t-il une raison pourquoi l’icône pour déplacer n’apparait pas ? On voit pourtant cet icône dans le vidéo.

    Merci à l’avance de votre aide.
    P.S. : Mes plugins sont à jour, donc ce n’est pas le problème cette fois-ci :P

    • C’est marqué dans la doc juste au-dessus de ce forum, chapitre « Installation » :

      Il faut installer le plugin jQuery UI pour pouvoir déplacer les champs à la souris pendant la création d’un formulaire.

    • ... et moi qui croyait avoir tout lu correctement... désolé pour le dérangement.

    Répondre à ce message

  • 2

    Bonjour,

    est-ce que cette erreur vous dit quelque chose :

    [Wed Jan 25 11:57:09 2012] [error] PHP Fatal error : Cannot redeclare balise_CONFIG() (previously declared in /var/www/html/spip/plugins/spip-bonux/configurer/pipelines.php:297) in /var/www/html/spip/plugins/cfg/cfg_fonctions.php on line 28, referer : http://blabla.com/ecrire/?exec=formulaires_editer&id_formulaire=1&configurer=champs

    Cela se produit lorsque j’essaie de faire n’importe quoi à l’étape « Configurer les champs ». Pourtant, l’ajout du champs se fait quand même si je vais dans « configurer le formulaire » et que je reviens dans « Configurer les champs ».

    Merci pour votre aide

    • Comme le dit le copier coller : il s’agit du plugin Bonux et du plugin CFG.

      Sûrement que tes versions ne sont pas à jour car ce conflit est résolu depuis longtemps normalement. :)

    • Bonjour,

      J’ai mis mes plugins à jour et tout fonctionne :)

      Merci beaucoup !

    Répondre à ce message

  • 1

    Se pourrait-il qu’il y ait un problème sur ce plugin Formidable qui porte bien son nom ?
    Après installation de JQuery Ui (dont j’ai coché TOUTES les fonctions sous SPIP 2.1.12), j’ai toujours cette même impossibilité de modifier l’ordre des champs d’un formulaire... Cela pourrait-il venir du plugin ?

    • Et il n’y a même pas à cocher les cases normalement (elles concernent l’insertion en partie publique). Le truc c’est que... chez-moi-ça-marche©.

    Répondre à ce message

  • 5

    Bonjour,

    Je rencontre un probléme depuis tout a l’heure avec le plugin lorsque je remplis et valide le formulaire j’ai ce message :
    Une erreur est survenue lors de l’envoi du courriel.
    et en haut de la page à gauche :Could not instantiate mail function. 

    J’ai vérifié l’email d’envoie du formulaire mais tout semble bon. Lorsque je récrée un formulaire du début toujours le même problème.

    Dois-je réinstaller le plug in avez vous rencontrer ce problème ?

    • j’ajoute que je test le plugin depuis hier et tout fonctionnait trés bien, je recevais bien les mails.

    • Un problème avec le plugin Facteur ou sa configuration ?

    • J’ai réinstallé le plugin facteur dans la configuration je coche :Utiliser la fonction mail de PHP

      Lorsque je fait testé la configuration le facteur m’envoie bien un mail mais lorsque j’essaye avec mon formulaire du plugin j’ai toujours la même erreur.

    • Il y a du changement. Voici ce que j’ai fais :

      J’ai ajouté un champ destinataire au formulaire, j’ai sélectionné l’adresse du webmaster (la mienne) et cela fonctionne. Au début j’avais mis dans la configuration des traitements :
      -  dans le champ Destinaire : aucun
      -  puis dans le champ Destinataire supplémentaire : mon adresse email
      C’est de là que venait le problème je pense bien que cela fonctionnait au début.

      Voilà, j’explique tout cela au cas ou quelqu’un ferait la même erreur que moi.

    • Il doit y avoir un problème quelque part car il est évidemment possible normalement de mettre n’importe quel adresse dans « destinataires supplémentaires ».

    Répondre à ce message

  • 8

    Bonjour,

    J’ai voulu essayer ce plugins, mais je rencontre un problème lorsque je vais (dans l’espace privé) sur la page édition->formulaire, j’ai le message d’erreur suivant :

    Erreur SQL 1146
    La table 'spip.spip_formulaires' n'existe pas
    SELECT '', formulaires.id_formulaire, formulaires.titre, formulaires.identifiant FROM spip_formulaires AS <span class="base64" title="PGNvZGUgY2xhc3M9InNwaXBfY29kZSBzcGlwX2NvZGVfaW5saW5lIiBkaXI9Imx0ciI+Zm9ybXVsYWlyZXM8L2NvZGU+"></span> ORDER BY formulaires.titre

    J’ai installé tous les plugins nécessaire,
    SPIP 2.1.12
    Formidable : 0.6.5

    J’ai remarqué que la table spip_formulaire n’existe pas en base !

    Merci de votre aide.

    • Il y a forcément une erreur SQL durant l’installation. Hier soir j’ai modifié un truc dans la table, alors j’ai dû faire une bêtise, mais quoi ? :)

      Il faut aller voir dans les logs, tmp/sql.log etc, pour trouver l’erreur qu’il y a eu durant l’installation.

    • Corrigé par http://zone.spip.org/trac/spip-zone/changeset/57654.

      Donc immédiatement disponible par SVN, sinon faut attendre une heure que le prochain paquet ZIP soit généré à midi.

      Merci ! :)

    • C’est OK ça marche !
      merci

    • Bonjour,

      J’ai ce problème aussi, j’ai téléchargé le zip sur cette page aujourd’hui.
      Voilà ce qui s’affiche lorsque je crée mon formulaire :
      Erreur SQL 1146
      Table ’franc10856.spip_formulaires’ doesn’t exist
      SELECT id_formulaire FROM spip_formulaires WHERE identifiant = ’grgg and id_formulaire != 0’

      franc10856 étant le nom de ma base sql.

      Je dois bien télécharger le plugin sur cette page ? Merci.

    • Pourtant la version d’aujourd’hui installe bien la table spip_formulaires, normalement.

    • Merci pour cette réponse rapide :) je vais réinstaller le plugin et réessayer.

    • Je viens de réinstaller le plugin via l’interface ajouter un plugin de l’interface privé cette fois et je n’ai plus ce message d’erreur. ;) merci et désolé pour le dérangement.

    • Super plugin qui me sauve la vie, Bravo pour ce travail ! j’imagine pas le boulot qu’il doit avoir la dessous ça doit être énorme. Mille merci en tout cas.

    Répondre à ce message

  • 1

    5 plugins pour faire marcher un formulaire... c’est une usine à gaz...
    merci quand même à celles et ceux qui se donnent la peine, mais des fois on a tendance à être trop éxigeants...

    • On va dire que je vais répondre sérieusement, pour le fun.

      Il est très facile de tout coder en un seul gros plugin fourre-tout. C’est justement ça l’usine à gaz.

      Sauf que je fais du logiciel libre. Et ce n’est pas juste livrer son code, c’est aussi et avant tout partager et collaborer avec les autres. Il se trouve que la majorité des morceaux utiles à la réalisation de ce plugin pouvaient, peuvent, et pourront être utiles à d’autres plugins. Il existe donc une multitude de plugins « outils pour développeurs » qui permettent de partager des choses utiles et qui marchent : c’est ça la collaboration et le partage. Et ce n’est pas un vœu pieux : le plugin Facteur, le plugin Saisies et d’autres, sont d’ors et déjà utilisés par moult autres projets.

      La liste complète est ici : http://plugins.spip.net/spip.php?page=plugins&categorie=outil

      Il est fini le temps des usines à gaz. Vive le temps des modules unitaires qui interagissent. Faire une tâche mais la faire bien. Et pouvoir se combiner avec d’autres.

    Répondre à ce message

  • 1

    2 questions :
    1) est-il possible de générer et mettre à jour automatiquement des graphiques (histogramme ou camembert) ?
    -  En liaison avec le plugin jpGraph ?
    -  Avec une ou des boucles spip ?

    2) une adaptation du plugin Formidable pour le future spip 3 est-ele prévue ?

    Merci d’avance

      1. Oui, ça ne devrait pas être trop compliqué. En fait le plugin produit déjà toutes les statistiques des réponses à un même formulaire, mais génère pour l’instant des tableaux HTML (il y a un modèle tout prêt pour cela). Pour que cela reste accessible, le truc vraiment bien serait de produire tes graphiques (peu importe le type) directement en javascript à partir du tableau <table> HTML. Comme ça ceux qui n’ont pas Javascript ont l’information sous forme de tableau très lisible. Et ceux qui ont javascript ont un joli graphique. Il me semble qu’il y a des librairies qui font ce genre de choses.
      2. Il y a déjà une branche SVN pour SPIP 3. Pour l’instant c’est un portage minimal, à peu près du copier coller mais ça s’installe et ça marche ! Il faut revoir ensuite les pages privées pour les réécrire « à la mode » SPIP 3.

    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