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

  • DelmotteS

    Bonjour,
    Je suis chez Free, je viens d’installer le plugins formidable sur un spip 3.0.5 et j’ai une erreur de ce type :

    Fatal error : Unsupported operand types in /mnt/169/sda/6/e/clubvoilegrandparc/plugins/auto/formidable_1_0/formulaires/formidable.php on line 54

    J’ai essayé de le réinstaller et j’ai toujours ce problème.
    Est-ce que quelqu’un peut m’aider ?
    Est-ce que ça marche chez Free ?

    merci

    Répondre à ce message

  • 3

    Bonjour, j’ai réalisé un formulaire de contact avec Formidable. Tout fonctionne bien, les traitements du formulaire semblent corrects

    J’aimerais cependant modifier l’adresse électronique d’expédition. Par défaut, il s’agit de l’adresse du webmestre du site. J’aimerais que ce soit une autre adresse. Est-ce possible ?

    Merci,

    Eric LM

    • Je réponds partiellement : si je change l’adresse mail du webmestre dans la config de spip, l’adresse de l’expéditeur du courrier est la nouvelle adresse mail du webmestre.

      N’y a-t-il pas un moyen pour ne pas changer l’adresse mail du webmestre, tout en changeant l’adresse mail de l’expéditeur ?

      Merci,

      Eric LM

    • Re-bonjour, désolé pour le bruit. La modification se fait dans la configuration de « Facteur ». (configuration que je n’avais pas bien comprise). Encore pardon et merci néanmoins !

      Bonne soirée,

      Eric LM

    • Oui, en installant le plugin Facteur et en le configurant, tu peux normalement indiquer quelle sera l’adresse correspondant à l’envoyeur du site, sans changer l’adresse de webmestre.

    Répondre à ce message

  • jacques83300

    Bonjour,

    J’ai créé un formulaire et je souhaiterais qu’un texte apparaisse dans le message envoyé aux destinataires mais pas dans l’accusé de réception. Par exemple un texte d’introduction du message.
    Pour l’accusé de réception, cela ne pose pas de problème car un champ est prévu dans la configuration du formulaire, mais je n’ai rien trouvé pour les destinataires du message.

    Merci d’avance pour votre réponse et bravo à l’auteur de ce plugin FORMIDABLE.
    Cordialement

    Répondre à ce message

  • 2

    Bonjour,

    J’ai un problème avec les champs oui/non. Ce champ est obligatoire dans mon formulaire et il est sur non par défaut, cependant quand on rempli le formulaire et qu’on ne touche pas à cette réponse (donc non), spip me marque que ce champ est obligatoire.

    Je viens de voir ce fil de discution : http://www.mail-archive.com/spip-zone@rezo.net/msg18148.html mais je n’y vois pas de solution...
    Pourriez vous m’aider s’il vous plait ? Je continue les recherches...

    • Oui c’est toujours un bug à corriger, à priori dans CVT de SPIP, mais j’avais peut-être une idée de bidouille en attendant mais j’ai pas encore pu testé.

    • Ah d’accord.

      J’ai contourné le problème en faisant des boutons radios (oui et non) en champ obligatoire. Il ’y a pas de valeur par défaut donc la personne doit cocher une des 2 cases, ça revient un peu au même.

      Merci pour la réponse.

    Répondre à ce message

  • 2

    Bonjour,
    je n’ai pas vu si cette question avait déjà été posée...

    est il possible d’insérer l’option joindre un document a un formulaire ?

    Merci

    • Non, c’est marqué dans la todo depuis le début mais c’est un peu compliqué de le faire proprement alors c’est pas encore fait.

    • ok merci

      je suis repasse sur le formulaire de contact avancé + facteur mais j’ai une belle erreur 500
      /public_html/plugins/contact/formulaires/contact.php on line 162
      Je sais que c’est un autre plugin mais au cas ou quelqu’un aurait une idée ou vécu la même expérience...

      saludos

    Répondre à ce message

  • Catherine

    Après un premier essai très convaincant en local, je rencontre des soucis. Des messages d’erreurs identiques à ceux rencontrés par Jérôme. J’ai donc remplacé le fichier php formidable_tables dans base du plugin formidable, en allant le chercher dans le zip mis en ligne après correction de Rastapoulos sur http://zone.spip.org/trac/spip-zone/changeset/66565 .

    J’ai pu alors configurer les formulaires, en importer ( ceux de mes essais en local ) mais, à chaque fois, impossible de les voir ensuite dans la liste des formulaires saisis....

    Merci d’avance pour votre aide. Je travaille avec la version 2.1

    attention : je ne suis pas développeure, je peux remplacer des fichiers sur mon serveur, c’est le max de mes compétences !!

    Répondre à ce message

  • 4

    Bonjour,

    Est-il possible pour les utilisateurs du formulaire (partie publique) d’ajouter des champs textes
    un peu comme dans la partie d’administration avec le bouton dupliquer ?

    Autre question j’utilise le groupe de champ pour regrouper des champs communs mais
    quand je regarde le code source de mon formulaire je vois que le fieldset ne regroupe pas l’ensemble
    de mes champs mais juste le 1er, comment faire pour qu’il prenne en compte l’ensemble des champs
    voulu ?

    Merci par avance

    • Quand tu ajoutes un champ, ça ne peut pas deviner où tu veux le mettre (pour l’instant il n’y a pas encore de drag-n-drop sur les boutons de création), ça s’ajoute donc forcément à la fin.

      C’est à toi de déplacer tes champs où tu veux, y compris à l’intérieur de tel ou tel fieldset. Tu peux le faire en drag-n-drop ou bien avec le champ « position » lors de la configuration d’un champ.

    • Ok merci, j’ai compris comment fonctionnait l’insertion des champs dans le groupe champ.

      Par contre je vais reformuler ma 1er question :
      Je veux mettre en place un formulaire de reporting où les utilisateurs pourront
      saisir leur activité via un champ texte, cependant comme leur activité ne sont pas limités
      je ne sais pas à l’avance combien de champ texte je dois mettre à la création de mon formulaire,
      donc il faudrait donc que les utilisateurs puissent ajouter des champs texte « à la volée ».

      Merci !

    • Ya pas de solution simple à ça. Tu pourrais essayer de créer une saisie qui ajoute des champs à la volée avec un javascript, mais avec le même nom de champ, en tableau, avec les clés qui s’incrémentent à chaque ajout du même champ : name="champ[0]", name="champ[1]", name="champ[2]" Etc. Alors ce tableau serait enregistré comme une valeur unique dans les enregistrements de formidable (mais en tableau sérialisé, comme pour les checkbox en fait !). Et après il faudrait faire une vue du même nom que la saisie, qui affiche correctement ces valeurs. Techniquement ça devrait être possible.

    • Ok merci pour la piste, je vais tester

    Répondre à ce message

  • 2

    Bonjour

    Est-il possible de définir des types de champs ?
    Je sais que c’est possible avec SAISIE en mettant la définition html dans le répertoire /saisie.
    Mais peut-on appliquer cela à FORMIDABLE et le nouveau type de champs sera t’il sélectionnable dans l’espace privé pendant la définition d’un formulaire ?

    Ce que je veux faire, c’est associer une image en vignette au label d’un champs. Pour créer des formulaires avec des vignettes cliquables pour certains champs. Des images sont souvent plus parlantes que des explications textuelles.

    Pensez-vous que cela soit possible ?
    Je peux éventuellement toucher au code de FORMIDABLE et proposer ensuite cette évolution aux créateurs. Mais j’aurai besoin d’être un peu guidé.

    MERCI

    • Il suffit que ta saisie ait une description en YAML du même nom que son squelette. Tu peux copier-coller d’une autre saisie et modifier. Dedans ya le nom, une icône, et d’éventuelles options (qui sont elles-mêmes des saisies).

    • Effectivement, c’est aussi simple que cela.
      Je suis épaté par le niveau d’intégration de ces deux plugins. CHAPO !

      Du coup, je suis en train de réaliser un plugin permettant d’ajouter des modèles de saisies avec vignette.

    Répondre à ce message

  • 8

    Bonjour et bravo pour ce travail,

    Je n’avais pas utilisé ce plugin depuis un moment (spip 1.9) et je viens de découvrir un outil « formidable » que je viens de mettre en place sur mon site sous Spip 3.0.5,

    Mais je souhaiterais l’utiliser avec les articles qui ont un mot clé.
    En effet, je présente du matériel (rubrique : « Le matériel Anim 16 ») dont une partie est à la location (mot clé : « A la Location »).

    Actuellement, le formulaire peut-être rempli avec tous les appareils, même ceux qui ne sont pas à la location, dur dur !

    Est-ce prévu ?

    De plus je serais heureux de pouvoir récupérer en affichage, un tableau avec par ligne l’article avec son titre, son sur-titre (caution) et sous-titre (cout de la location) pour pouvoir faire mes additions même manuelles et l’imprimer avec les éléments comme le nom du demandeur et la date (2 zones de saisie) si cela peut aider à améliorer le plugin, j’en serais très fier.

    Cordialement, Alain

    • Mmmh c’est un peu particulier ton truc, c’est propre à ton utilisation des champs des articles où tu mets le prix à tel endroit etc.

      Il faudrait que tu te construises un squelette qui t’affiche les résultats en tableau comme ça. 1) Boucler sur les résultats du formulaire « truc » (une ligne de tableau), 2) boucler sur chaque champ de la réponse (les cases d’une même ligne).

      <BOUCLE_formulaire(FORMULAIRES){identifiant=truc}>
          <BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire}>
              <BOUCLE_champs(FORMULAIRES_REPONSES_CHAMPS){id_formulaires_reponse}>
              #VALEUR (si pour un des champs cette valeur est un id_article, ben tu fais une boucle (ARTICLES) avec pour récupérer le champ avec le prix)
              </BOUCLE_champs>
          </BOUCLE_reponses>
      </BOUCLE_formulaire>
    • Merci de cette réponse,

      je penses y travailler en aval, lorsque j’aurais proposé le bon choix dans le formulaire avec seulement les articles correspondant à un mot clé.

      Si ce choix est possible car le choix actuel est un peu confus pour le visiteur qui ne peut pas savoir si l’article est à louer ou pas.

      Cordialement, Alain

    • Je lis : matériel, réservations, .. Cela me fait perser que tu peux jeter un coup d’oeil à ORR (l’intégration de GRR dans SPIP) Par contre, je ne sais pas s’il est prévu de gérer prix et cautions etc.

    • Bonjour,

      j’aurais du poster seulement ma demande concernant le formulaire avec sélection par mot clé !!!

      car la discussion s’est éloignée de mes besoins, si mes visiteurs ne peuvent pas sélectionner les articles ayant le mot clé « A louer » et doivent chercher dans le plan du site, je ne me servirais jamais de l’affichage des réponses [CQFD]

      Pour ORR, j’ai testé, mais cela ne me convient qu’en partie.

      Je vous encourage à me dire si vous aussi vous aimeriez ce genre de sélection : « Par mot clé » et si cela vous amènerai vers une utilisation du plugin « Formidable »

      Cordialement, Alain

    • Le plus simple c’est de te créer une saisie à toi qui correspond à ton besoin, en imitant les autres pour prendre exemple. Une saisie qui sort des articles suivant un mot-clé choisi dans la config de cette saisie. Faut un fichier HTML et un fichier YAML qui décrit la saisie et ses options (elles-même des saisies).

    • J’y ai pensé mais je ne souhaites pas faire n’importe quoi.

      Quel dossier est concerné dans le plugin, que je fasse une copie dans squelettes pour tester ?

      Par avance, merci

    • Ben faut pas copier de dossier mais faut créer la même arborescence pour placer ta saisie à toi. Les saisies sont dans un dossier « saisies/ », les vues dans un dossier « saisies-vues/ » et les analyses (stats d’un ensemble de réponses) dans un dossier « saisies-analyses/ ».

      Donc faut à minima « saisies/article_par_mot.html » et « saisies/article_par_mot.yaml ».

    • OU juste une saisie mot_cle peut-être ? Je sais pas...

      Et si les formulaires sont intégrés dans des articles, peut-être utiliser dans le squelette les mots clés sur lîes aux articles...

    Répondre à ce message

  • 6

    Bonjour,
    Au sujet du courriel de notification.
    Comment agencer visuellement les résultats à sa guise :
    En effet la ligne suivante affiche bien les résultats :
    #VOIR_SAISIES{#ENV*{saisies}, #ENV*{valeurs}}
    Cependant elle les affiche verticalement avec des sauts de ligne, ce qui est fort logique.
    Mais avec un long formulaire, je me retrouve avec des résultats qui s’affiche sur plus d’une page.
    Ce qui n’est pas très pratique pour moi : j’aimerai avoir mes résultats qui ne dépasse pas une page.
    Donc mis en page différemment.

    Je ne sais comment procéder ( je connais css), pourriez vous me donner une piste
    Cordialement.
    Merci d’avance

    • Oui #VOIR_SAISIES permet de tout générer un truc standard en une seule fois. Si on veut faire de la personnalisation un par un là faut bidouiller. Si c’est pas juste pour le courriel mais pour toutes les fois où on génère des vues, tu peux tout simplement surcharger les vues par défaut (saisies-vues/_base.html pour le socle commun et tous les autres pour les saisies qui ont des subtilités) afin de ne pas mettre le label dans un bloc par exemple mais avoir label et valeur sur la même ligne, au moins pour certains types de champs.

    • Ce qui m’intéresse c’est juste le courriel de notification, en effet il faut bidouiller : j’ai beau ouvrir _base.html ( qui se trouve dans saisies-analyses/ et non dans saisies-vues/), je ne vois rien dans ce fichier qui sert de mise forme à ce fameux courriel, j’ai même supprimer son contenu pour test et rien ne se passe. Je dois mal comprendre ta réponse. Je continue de chercher. Si tu pouvais m’en dire d’avantage cela m’aiderai énormément.
      Merci en tous cas pour ta rapide réponse.

    • Les saisies et leurs vues sont dans le plugin Saisies, pas dans Formidable.

    • Merci grandement, j’ai « saisies » ;)

    • bonjour,
      J’ai modifié _base.html dans saisies directement cela fonctionne effectivement, mais c’est « mal » car je n’ai pas « surchargé ».
      Quel est la bonne méthode pour « surcharger » ?
      Car j’ai créé un répertoire saisies-vues/ dans squelettes en y mettant _base.html mais ça ne fonctionne pas...

      Cordialement.

    • Ben si, dans squelettes/ comme pour tout autre morceau à surcharger. Faut peut-être recalculer.

    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