Formidable, le générateur de formulaires

Un générateur de formulaires facilement configurable pour les non-informaticiens et facilement extensible pour les développeurs.

Introduction

L’objectif était de créer un plugin permettant de générer des formulaires. Historiquement, 2 plugins avaient déjà été développés précédemment pour remplir cette fonction :

  • Forms &Tables, qui n’a pas été complètement porté pour SPIP 2.
  • et spip-formulaire créé par artego mais qui n’est 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éveloppeurs.

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éveloppeurs.
    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.

Installation

Le plugin nécessite les plugins suivants :

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

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 depuis un squelette

À noter que dans un squelette, 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.

Le tableau en deuxième paramètre :

  1. #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 :

  1. #FORMULAIRE_FORMIDABLE{contact, #ARRAY{hidden_1, #ID_DOCUMENT}}

Pré remplir les champs depuis une ancienne réponse

Si les réponses sont enregistrées, on peut passer en troisième argument un identifiant de réponse.

  1. #FORMULAIRE_FORMIDABLE{contact,'',23}

pour modifier la réponse 23.

Champs oui-non et case unique

Pour rendre obligatoire la réponse « oui » à un champ de type oui-non ou 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 :

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

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)

Dernière modification de cette page le 2 octobre 2018

Discussion

633 discussions

  • 1

    html avant/après
    Pour faciliter la mise en forme des formulaires, est-ce qu’il ne pourrait pas être intéressant d’avoir dans le formulaire de configuration des champs une option supplémentaire permettant d’insérer du « code html avant » et du « code html après » (ou quelque chose d’équivalent).
    Avec la possibilité d’appliquer des classes sur les éléments, cela permettrait de pouvoir très facilement utiliser les éléments de grille des frameworks type foundation...

    • En fait Saisies permet d’ajouter à la fois des classes sur les champs eux-mêmes, et sur le conteneur (le div qui entoure chaque champ). Mais dans le constructeur, actuellement, on ne permet de configurer que les classes des champs, pas ceux des conteneurs. Faudrait sûrement ajouter ça déjà.

    Répondre à ce message

  • 1

    Bonjour,

    Après recherche, il ne semble pas exister de fonctionnalité pour qu’un administrateur puisse modifier les réponses au formulaire depuis l’interface SPIP. Or, j’ai un formulaire avec près de 300 réponses, pour chacune desquelles je dois faire un suivi d’action. Pour cela, une saisie d’information par l’administrateur, soit dans un champ caché modifiable en administration, soit visible et modifiable depuis la liste des réponses, aurait parfaitement fait l’affaire. Dommage !
    Mais peut-être quelqu’un a-t-il une solution ? (J’ai envisagé l’utilisation de ’Champ extras’, mais les attributs n’apparaissent pas dans les réponses à formulaires et sont encore moins modifiables.

    Merci !

    • Oui je pense que ça devrait être ajouté à la todolist, sur l’objet « réponse », il faudrait à minima un champ « commentaires » pour les admins et modérateurs du formulaire.

    Répondre à ce message

  • 1

    Bonjour
    J’ai un formulaire où je demande l’adresse mail . Est-ce possible de renvoyer après validation du formulaire un récapitulatif des données envoyées à cette adresse ?
    merci

    • oui, il faut activer et configurer l’option d’accusé de réception dans le traitement « envoyer un mail »

    Répondre à ce message

  • 4

    Bonjour à tous et tous mes vœux pour 2019,

    j’ai installé le formulaire « formidable » et je n’arrive pas à trouver comment insérer mon adresse mail afin de recevoir les courriels de mes visiteurs, contrairement à « contact7 » qui le demandait automatiquement.

    Pouvez-vous m’aider svp, merci d’avance

    Frédéric

    Répondre à ce message

  • 1

    bonjour,
    je viens de charger formidable dans cette page

    Version 3.34.2
    (ZIP – 224.1 ko) SPIP 3.0, SPIP 3.1, SPIP 3.2
    quand je veux l’activer il me dit

    Le plugin Formidable dépend du plugin SAISIES ≥ 3.10.0.
    version que je ne trouve pas sur saisie ..

    Répondre à ce message

  • 1

    Bonjour,
    J’aimerai pouvoir pré remplir les champs d’un formulaire depuis une ancienne réponse en utilisant la commande proposée dans la documentation, commande à placer dans un squelette suivant l’exemple :
    #FORMULAIRE_FORMIDABLEcontact,’’,23
    Comment faire pour déclencher l’appel du formulaire à partir d’un article sous la forme :
    <formulaire_analyse|id_formulaire=34>
    Faut-il fabriquer un modèle pour insérer la commande ?
    J’ai essayé différentes formules, mais je n’y suis pas arrivé.
    Existe-t-il un exemple de squelette ou de modèle ?
    Merci pour votre aide
    abarge

    Répondre à ce message

  • 4

    Bonjour,
    J’aimerais pouvoir exploiter un formulaire formidable, mais à la création du formulaire il m’est impossible de configurer les traitements car la page de configuration reste blanche (voir document).
    Du coup la saisie du formulaire ne fait rien.
    Y a-t-il une configuration particulière à prévoir ou s’agit-il d’un bug du plugin ?
    Environnement :
    SPIP 3.2
    Formidable 3.34.2
    Saisies 3.11.1
    Quelqu’un pourrait-il m’apporter une aide ?

    • Une page blanche ou une page coupée = une erreur fatale PHP. Il faut que tu actives l’affichage des erreurs PHP pour savoir laquelle, afin de pouvoir aider.

    • Bonjour M. Rastapopoulos et merci pour votre réponse rapide pour un premier jour de l’année 2019.
      J’en profite pour vous présenter me meilleurs voeux.
      Effectivement après avoir fait apparaître les erreurs PHP, et demandé la configuration des traitements j’obtiens le message :
      Fatal error : Maximum function nesting level of ’100’ reached, aborting ! in C :\wamp\www\gemmologie\ecrire\public\phraser_html.php on line 103
      Voir document joint
      Merci pour votre aide
      André BARGE

    • T’as Xdebug avec ton PHP ? Il y a une valeur de configuration à lui préciser pour aller au delà de 100 :
      http://www.kitpages.fr/fr/cms/154/nesting-level-et-xdebug

    • Merci pour votre aide,
      J’ai pu régler le problème en commentant dans php.ini la ligne :
       ; zend_extension = « c :/wamp/bin/php/php5.4.3/zend_ext/php_xdebug-2.2.0-5.4-vc9.dll »

    Répondre à ce message

  • 6

    bonjour ,

    je souhaite mettre un lien vers une page du site dans une description , ou dans label ou dans explication d’un champ du formulaire, (comme par exemple pour les mentions légales ou politique de confidentialité acceptées, Rgpd, etc)

    Je n’ai pas trouvé comment ni où . J’ai essayé sans succès le classique

    1. [->artxx]

    merci !

    • Dans les champs d’une ligne, c’est comme les titres dans les contenus SPIP, c’est pas prévu de faire passer « propre() » dessus, pour compiler tous les raccourcis.

      En revanche dans la saisie « explication », là t’as un texte long, textarea, et celui là il passe dans « propre() ».

    • Bonjour,
      merci de votre réponse.
      Merci j’avais testé et ai retesté ce matin : négatif (voir copie écran), Monsieur Propre ne passe pas par là visiblement - J’ai mis le lien entier mais en plus il n’est pas « clicable ».

    • Ce n’est pas la saisie explication que tu montres là. C’est le paramètre explication d’une autre saisie.

      Je te parle de la saisie explication, qui est dans la liste des saisies qu’on peut ajouter.

      Le texte libre passe bien dans propre :
      https://zone.spip.net/trac/spip-zone/browser/spip-zone/_plugins_/saisies/trunk/saisies/explication.html

    • Oui , bien sûr , effectivement c’est beaucoup mieux avec la nuance ! merci !

    • cela étant @Rastapopoulos, cela pourrait valoir la peine de mettre du propre sur le champ explication d’une saisie, non ?

    • Non. :)

      Enfin je suis pas trop pour. Les champs d’une ligne, sont fait pour n’avoir qu’une ligne, et pas pouvoir générer n’importe quoi. Ça peut être inclus dans une balise qui n’accepte pas d’autres balises blocs à l’intérieur, directement un p etc. Et bref, c’est fait pour mettre une petite phrase d’explication, courte, liée au champ. Pas pour pouvoir mettre un texte de 3km.

      Pour ça il y a justement la saisie explication exprès, mais qu’on met avant ou après, et qui est du vrai texte libre long.

    Répondre à ce message

  • 4

    Bonjour,

    ou puis-je récupérer les anciennes version ?
    Je souhaiterais récupérer la version antérieure, car celle ci me plante un site après la mise à jour (erreur php).

    Merci

    • Ben ça dépend de quelle version tu parles. Si c’est une version bien précise sur la même branche que pour SPIP 3, il faut le récupérer par SVN en indiquant jusqu’à quelle révision. Ou bien sur le Trac, il y a un truc pour télécharger à tel moment une fois qu’on est sur une révision (je ne sais plus l’astuce de tête mais il y a un paramètre pour ça).

      Sinon ya bien les ZIP de toutes les branches qui sont générées, donc y compris la branche 2 qui était aussi pour SPIP 3 :
      https://plugins.spip.net/formidable

    • Merci pour ta réponse.

      En effet j’aurais souhaité récupérer sur la même branche une version antérieure.
      La 3.15.0.

      Je viens à l’instant de la trouver dans un backup.

    • par contre il serait bon de préciser ce qui te plante, comment, pourquoi, quelle version de PHP, etc.

      Sinon d’autres auront le même problème...

    • Ça serait un avantage d’avoir de vrais tags de version en Git…

    Répondre à ce message

  • 4

    Bonjour,
    J’ai déménagé un site d’un hébergeur à un autre et depuis je n’arrive plus à recevoir les mails provenant du formulaire. J’ai essayé de faire les mises à jour des plugins saisies et formidable, mais je n’ai toujours pas de réception du mail.
    Le formulaire me dit pourtant que le mail est bien envoyé et j’ai essayé avec différentes adresses mails.
    D’où pourrait venir le problème ?

    Merci d’avance

    • Il faut voir aec Facteur, la configuration de comment se font les envois sur ton nouvel hébergement, le SMTP, etc. Ce plugin ne s’occupe de rien du tout à priori.

    • Merci de ta réponse,

      Alors j’ai testé le plugin facteur depuis le back office avec la fonction « tester la configuration » et je reçois bien un mail.
      Par contre depuis mon formulaire formidable lorsque je fais l’envoi j’ai le message « votre message a bien été envoyé » mais je ne reçois rien. Je peux également enregistrer les résultats du formulaire en bdd sans problème.
      On dirait bien que facteur fonctionne et que le serveur est ok, d’où pourrait venir le problème alors ?

      Merci

    • Il faudrait voir les logs de facteurs pour savoir s’il a bien recu le mail et transmis.
      Est-ce que l’expediteur a son domaine correspondant à celui du site ? Certains serveurs SMTP bloquent dans le cas contraire.

    • Merci,
      Je viens d’effectuer l’essai avec une adresse avec le même nom de domaine mais ça ne change rien.
      Pourtant il semble que ce soit facteur qui gère l’envoi du mail de formidable donc ça doit être les mêmes logs non ?
      J’utilise les dernières versions des plugins.

      Merci encore

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

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