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 utilisateurtrice

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_reponse Identifiant de la réponse à modifier Entier
no_ajax Désactiver l’ajax sur le formulaire Booléen
traiter_enregistrement_desactiver_modif_instituer_prop Permet de désactiver au cas par cas l’option de configuration « Lorsque l’internaute modifie la réponse, son statut redevient « proposée » » 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

830 discussions

  • 4

    Hello
    il est dit dans la doc

    Utilisez le modèle <formulaire> classique : <formulaire|formidable|id=34> ou bien <formulaire|formidable|id=contact>

    Je viens de mettre à jour un site SPIP 4.2 vers 4.3, et fait la mise à jour des plugins, dont formidable (j’en suis resté à 6.6.2).
    Le modèle id + N° fonctionne mais le modèle id + “identifiant littéral” ne fonctionne plus (il fonctionnait avant la mise à jour)
    Quelque chose a changé dans le plugin ?

    • Bonjour,

      il n’y a eu aucune suppression de cette fonctionalité dans formidable. Du reste, je viens de vérifier et cela fonctionne parfaitement chez moi.

      Je soupconne vaguement une surcharge de votre côté des fichier de formidable. Pouvez vous vérifier s’il n’y a pas des fichiers formidable.html et formidable.php dans un dossier formulaires de votre dossier squelettes ?

    • Merci Maieul de la réponse.
      Non, il n’y a pas eu de surcharge : un var_mode=inclure sur une page dans laquelle il y a un formulaire d’implanté retourne :

      plugins/auto/formidable/modeles/formidable.html
      plugins/auto/formidable/formulaires/formidable.html
      plugins/auto/saisies/inclure/generer_saisies.html

      De ce que je comprends, c’est donc - a priori - formidable qui prend tout en charge, c’est bien cela ou faut-il que je cherche autre part ?

    • hum. Je suis étonné que tu sois dans auto/formidable sans sous dossier correspondant à la version.

    • De mémoire, j’ai installé le plugin non pas par SVP “standard” (je ne sais pas trop comment appeler la procédure classique : ajouter un plugin, rechercher, cocher la case du plugin dans la liste des plugins proposés puis télécharger et activer), mais en téléchargeant l’archive après avoir renseigné le mdp administarteur puis donné un nom du (sous)répertoire dans lequel sera installé le plugin. Le nommage est donc différent de celui effectué quand on installe un plugin via la procédure classique et qui conduit à des nommages prenant en compte le numéro de version

    Reply to this message

  • 12

    Bonjour à tous,

    Suite à la mise à jour du spip vers la dernière version, je rencontre des dysfonctionnement avec formidable. Les champs saisies et validés affichent « sans réponse » Lorsque je clique sur les champs, j’ai la valeur du place holder, aucune saisie n’est. mémorisée.
    Le form est avec des saisies obligatoires partout.

    Je deviens dingue avec ce truc… Avez-vous une piste ou idée de ce qu’il se passe ?

    • Noter que cela fait la même chose avec des tous les formulaires créés. Notez également que j’ai une erreur

      Error 503 Backend fetch failed
      Backend fetch failed
      Guru Meditation:
      XID: 410827562
      Varnish cache server

      sur l’envoi des emails à validation du formulaire lorsqu j’active la fonction…
      J’ai bien entendu désactivé tous plugins extérieurs à formidable…

      Sinon, lorsque je suis dans l’espace privé j’ai bien le résultat du formulaire avec :« sans réponse » à tous les items. Mais lorque je clique en haut sur le boutons modifier les réponses du formulaire, des champs présaisies apparaissent , comme sur la pj 2

    • Inutile de poster à deux endroits :)

      Alors bon deja, la capture d’écran concerne non pas formidable, mais formidable tablesorter :).

      Donc il faudrait voir si en regardant les réponses dans formidable hors formidable tablesorter, cela pose toujours souci.

      Ensuite, si le problème se pose en dehors de formidable tablesorter, il faudra investiguer plus en détails. Le fait que tu ai une erreur me fait penser que cela pourrai provenir de PHP : il faudrait voir les logs PHP.

      Si le problème n’a lieu que dans formidable tablesorter, il faudra voir si celui ci est à jour.

    • les captures d’écran

    • Bonjour Maïeul, , oui le problème se produit bien dans formidable seul, sans tablesorter ni tablesorter pour formidable…
      Je viens d’activer les suivis de log php et formidable_post.log. Effectivement depuis le 12/12/24 des logs y sont répertoriés avec les saisies … J’ai masqué les données de la personne…
      Voici le premier. de la longue liste =``2024-12-12 11:36:34 90.115.152.177 (pid 14303) :Pub:!INFO: “post”:“formulaire_action”:“formidable”,“formulaire_action_args”:“Q6d6ba5DW1gqVMQAAf+FfFNmnAYZxPO\/FoRlTc6Q+nXGQts8vs5db06KMXOALAF7PtAwY2zVtiKLcIJNSNvRmJP8ZA\/+gR0zmTNBXEjk62k=”,“formulaire_action_sign”:“”,“id_formulaire”:1,“formidable_afficher_apres”:“formulaire”,“_jeton”:“243653d4bde7e1f32ddf75975e0fa59effb4f0b98e6333dbd888a8a0de0ee46e”,“bigup_retrouver_fichiers”:“*:1733999581:fdfb0b8194c22316e9ee13d10f326e37f17dfdd59f8458386bb13779369d1013”,“email_nobot”:“”,“input_2”:“XXXXXX”,“input_1”:“XXXXXX”,“textarea_1”:“Bonjour,\r\nMon projet\r\nMur de cl\u00f4ture en moellon \u00e0 piquer et \u00e0 enduire \r\nPortail”,“email_1”:“XXX@aliceadsl.fr”,“input_3”:“00000000”,“mechantrobot”:“”,“files”:[]`

    • Fait une copie de ces logs, cela te permettra de retrouver ce que les gens ont postés, deja.

      Je me demande si tu a pas tout simplement un problème de base de donnée corrompu. Tu a tenté une réparation de la base ?

    • Une chose, le formulaires fonctionnaient parfaitement avant la mise à jour. Et dans l’espace privé, ceux qui fonctionnaient avec la mise à jour sont aujourd’hui affichés avec le statut “proposé à l’évaluation” alors que ceux depuis la mise à jour ont bien le statut publié, mais ne dysfonctionnent.

    • Oui, réparation effectuée avec succès.
      J’ai eu une attaque ( le site avait 2 ans sans mise à jour). Je l’ai remonté entièrement et avec ses paramètres. Nouveau serveur, nouvelle base sql OVH et données de la basse que je pensai avoir bien nettoyé avant réintégration.

    • Mais c’est une mise à jour de quellle versions vers quelle versions ? Parce que je peux t’assurer que les autres personnes n’ont pas ce problème.

      Honnetement je pense que la solution la plus simple pour aboutir à une réponse serait que je puisse accéder aux fichiers et à la base mysql pour faire des tests...

    • Merci pour tes réponses,
      Je suis passé d’un Spip 2XX à la dernière, en pasant par 3 phases pour la mise à jour (pour voir si cela tenait)
      Souhaites tu un accès, spip et OVH ? en mp ou mail , via quel canal pour les échanges ?

      Bien à toi.

    • Ah oui oki. C?est une mise à jour un peu intense. Pas impossible qu’il y ait des choses qui du coup complexifient/merdent.

      Tu peux m’écrire à monprenomsanstrema@monprenomsanstrema.net

      J’ai un peu de temps là. Sauf si le site me pose problème pour des raisons ethiques, je devrais pouvoir faire ca.

    • Bon, et bien la réponse était : le dossier squelettes du site surchargeait les fichiers de formidable... donc forcément cela ne pouvait pas marcher...

    Reply to this message

  • 2

    Bonjour, depuis quelques jours, je rencontre beaucoup de message de spammeur sur mon site. Quelle méthode me conseillez-vous pour limiter ou ne plus avoir ce type de messages ?

    • Bonjour,

      Est-ce que le plugin NoSPAM est à jour ?

    • C’est vraiment étrange je n’ai jamais été victime de vague de spam avec ce plugin, mais j’ai régulièrement des gens qui s’en plaignent.

      En dehors de la mise à jour du plugin nospam, une solution peut être de configurer une vérification dans le champ qui est victime de spam pour demander à refuser les valeurs contenant certaines expressions régulière, si la vague de spam reprend souvent les memes termes.

    Reply to this message

  • 4

    Bonjour,
    Je m’aperçois que le contenu d’un champ texte n’est pas inclus dans le mail reçu après saisie d’un formulaire.
    Exemple de corps de mail reçu :

    Form "Contact" sent on 10/10/2024 at 17:48:25. From this pagesite.xx/contact-us-131?id_formulaire=4). ---- Sent via the site xx

    Le champ texte est bien rempli (il est obligatoire) et est bien enregistré en base.

    Formidable 6.5.0
    SPIP 4.3.2

    Merci
    dd

    • Hum... tu pourrais nous envoyer l’export yaml de ton formulaire.

      _A priori_ c’est une fonction de base et donc les autres personnes auraient rapporté ce problème depuis longtemps.
      Tu es dans quelle version de saisies ?

    • Ah par contre il y a un bug dans la version 5.8.0 de saisies si jamais tu avais configuré “ne pas envoyer les champs vides”. Si c’est le cas, la mise à jour vers la 5.8.1 (qui sort dans la soirée) devrait resoudre le problème.

    • Merci Maïeul,
      C’est bien réparé avec Saisies 5.8.1.

      Petite remarque : j’ai un champ “joindre un fichier” et même s’il n’est pas rempli par l’internaute il apparaît dans le mail de retour comme ceci :
      Vous pouvez joindre un fichier Sans réponse

      même si la case « ne pas envoyer les champs vides ». est cochée.

      dd

    • Ouais les fichiers c’est tjr un peu chelou.

      Faudrait que tu ouvre un ticket pour cela...

    Reply to this message

  • 9

    Bonjour
    comment ajouter en champ hidden la date de soumission du formulaire ?
    ou au moins l’identifiant de la réponse

    merci
    Natacha

    • Techniquement pas évident, et surtout pourquoi faire ? dupliquer l’information n’est jamais une bonne pratique en informatique (sauf pour des tests de cohérence et les sauvegarde).

      Quelle est le besoin profond derrière tout cela ?

    • je ne fais que transmettre la question de Erasmus Mundus « Chemoinformatics+:
      qui est
      profite pour vous demander si il est possible dans le message retour d’un formulaire, de donner le numéro de la saisie réalisé par l’utilisateur? Je ne sais pas si c’est clair. Ou du moins, si on peut afficher la date?

      je suppose que c’est pour identifier plus précisément la date d’inscription
      ceci dit il y a tout ce qu’il faut pour cela
      je vais me renseigner plus avant
      merci
      PS
      depuis la dernière mise à jour du plugin V 6.5.0 + saisie V 5.8.1
      en éditant un formulaire
      Deprecated: Le filtre saisie_balise_structure_formulaire est deprécié et sera supprimé en v6 du plugin saisies. Utiliser directement . in /var/www/html/plugins/auto/saisies/v5.8.1/saisies_fonctions.php on line 34

      je sais pas pourquoi ça s’affiche alors que ce n’est pas activé dans mon fichier options
      peut être dans la config serveur mais la c’est la fac ...

    • Si le serveur de ta fac affiche des warning/deprecated, ils doivent régler cela. Cela étant, je vais regarder parce que c’est pas normal qu’on ait encore ca.

      pour revenir au problème d’erasmus mundus “chemoinformatics” faudrait qu’il précise ce qu’il entend par message retour? le mail? le message affiché après la soumission du formulaire ?

      dans tout les cas, si c’est ce besoin ca passera soit par une option, soit par un nouveau raccourcie `@id_formulaires_reponse@. Mais si ca concerne les emails, ca attendra la fin d’une refonte majeure de la gestion de l’envoi des mails.

    • Et donc faudrait ouvrir un ticket pour cette feature, une fois le besoin clarifié.

    • Et pour saisie_balise_structure_formulaire je ne vois rien dans formidable ni dans saisies qui pourrait générer cela. Mais si tu a un plugin qui ajoute des saisies spécifique, c’est pas impossible que cela se produise...

    • Merci
      j’ai invité mon contact à lire ce fil

      on a en plus CVT Upload 2.1.6
      tous les plugins sont à jour et en V 4.3.3

    • MARCOU Gilles

      Merci Natacha pour relayer ma question au bon endroit.

      “Si le serveur de ta fac affiche des warning/deprecated, ils doivent régler cela.” C’est possible, mais je n’ai pas compris ce que je dois demander aux ingénieurs qui gèrent le serveur. Mais si j’ai bien compris, le message saisie_balise_structure_formulaire serait généré par un plugin tiers qui fait appel à une fonctionnalité dépréciée du plugin saisi?

      Concernant “message retour”, il s’agit du message affiché à la fin de la saisie et qui est édité dans “configurer le formulaire”. Comme nous recevons beaucoup de formulaire, je souhaite donner aux usager un moyens de nous aider à retrouver leur dossier. Le numéro d’enregistrement du dossier me semblait simple, parce qu’on le retrouve immédiatement dans l’interface d’analyse du formulaire. En attendant, je propose un identifiant composite de la réponse de l’usager. Mais pour retrouver le dossier, je dois préparer une requête. Je pense qu’un nouveau raccourcis @id_formulaires_reponse@ est le plus logique.

    • il doivent avoir activé l’affichage des erreurs par défaut
      car dans mes_options mes instructions sont commentées pour ne pas les afficher

      je comprend mieux la demande mais la je vois pas comment faire simple

    • pour le @id_formulaires_reponse@ ca devrait etre relativement simple à coder, mais faut ouvrir un ticket sur la forge sinon moi je bosse pas :) (deja que je le fais benevolement :)).

      > Mais si j’ai bien compris, le message saisie_balise_structure_formulaire serait généré par un plugin tiers qui fait appel à une fonctionnalité dépréciée du plugin saisi ?

      exactement. Cela peut être par exemple un plugin qui fournit lui meme des saisies spécifiques.

    Reply to this message

  • 4

    Bonjour,
    un bug php, dans /ecrire/?exec=formulaires_analyse&id_formulaire=23, (en clliquant sur “analyse des réponses” ):
    Erreur d’exécution ../plugins/auto/formidable/v6.3.2/saisies-analyses/_base.html | File […]/ecrire/public/composer.php(94) : eval()'d code Line 49 : str_word_count(): Argument #1 ($string) must be of type string, array given

    spip 4.2.14, php8.2.21
    ce bug apparaît sur (au moins) deux de mes sites de configuration équivalente.

    Reply to this message

  • 8

    Bonjour,
    Formidable 6.2.0, dans /formidable/6.2.0/formulaires/formidable.html
    ligne : 9
    [<h3 class="titrem"><span>(#ENV{_titre})</span></h3>]
    ne retourne rien.
    [<h3 class="titrem"><span>(#ENV{_formidable/titre})</span></h3>]
    retourne bien le titre du formulaire.
    cordialement

    • Oui car c’est prévu non pour afficher le titre du formulaire (qui serait alors systématiquement affiché, ce qui est plus que discutable), mais un titre qu’on passe explicitement lors de l’appel via #FORMULAIRE_FORMIDABLE{21,#ARRAY{_titre,montitre}}

      mais c’est assez has been deja le h3, a mon avis ce genre de chose devrait être déporté a l’exterieur du squelettes formulaires/formidable car on ne peut pas prévoir à priori les balises et tags à utiliser.

    • Bonjour Maïeul,
      pour un appel dans un article ?
      <formulaire|formidable|id=contact|[......?.......]=Nous écrire>
      j’ai essayé : _titre=, formidable/_titre=, titre=, en fait c’est pas récupérable dans l’environnement du formulaire.

      Pour le h3, c’est vrai que c’est problématique,
      j’ai dû surcharger formulaires/formidable.html dans /squelettes/ pour éviter des sauts de h1 à h3 dans mes articles avec la perte des futures améliorations.

      Autre remarques :
      — Pour les champs textarea, il y a une condition de validation “Nombre de caractères maximum” (sympa) et pas “Nombre de caractères minimum” :(
      — J’ai observé aussi l’impossibilité d’utiliser l’option /g (global) dans les regex pour valider un champ, C’est le plugin API vérifier qui chouine.
      Par exemple: /(http:\/\/)|(https:\/\/)/gmi
      Cordialement

    • Je ne saisis pas trop le principe de faire cet appel de titre dans un texte SPIP, vu qu’alors tu peux forcément mettre le bon titre avec le bon niveau H suivant où t’es juste devant l’appel au formulaire ({{{Mon titre}}} ou {{{**Montitre}}} avec le plugin Intertitre ou <hN> directement)

    • Je rejoins Rastapopoulos sur sa remarque.

      PAr ailleurs pour tes 2 autres points, il vaudrait mieux ouvrir des tickets, respectivement dans les plugins saisies et les plugins verifier.

    • Bonjour Maïeul,
      Dans un premier temps j’avais mis un intertitre comme alternative, puis finalement j’ai pas trouvé cela excellent. Lorsqu’il y a besoin de suspendre l’emploi du formulaire pour X raison (spam, erreur, modif, ...), l’intertitre reste affiché. Quand la suspension dure un certain temps il faut le supprimer et le ressaisir ensuite, puis avec le temps Il faut s’en souvenir de cette manip. Bref.
      Cordialement

    • Bonjour Maïeul,
      Dans la configuration du plugin : /ecrire/?exec=configurer_formidable
      L’option : Les admins de rubriques peuvent également créer et modifier les formulaires, non cochée Créer et modifier c’est “niet”, Voir c’est OK à partir du menu Édition.
      Pour simplifier la vie de l’administrateur restreint, je pensai pouvoir décharger le menu Édition du lien “Formulaires”. En fait c’est pas possible, la fonction concernée n’est pas _dist
      https://git.spip.net/spip-contrib-extensions/formidable/-/blob/master/formidable_pipelines.php?ref_type=heads#L461
      Cordialement

    • Ouvre des tickets stp.

    • Décision a été prise de :

      -  supprimer #ENV{_titre}
      -  ajouter une option pour insérer du texte avant/après le formulaire (dans les options globales au moment de configurer les champs).

      Cela devrait répondre à ton besoin d’intertitre qui disparait automatiquement en cas de depublication du form.

      Pour le reste, en l’absence de ticket cela ne sera pas traité.

    Reply to this message

  • 2

    Bonjour,

    Je butte sur le problème suivant.
    J’ai développé un squelette qui fait un appel à

    #FORMULAIRE_FORMIDABLE{id du formulaire}

    puis qui traite la réponse donnée par l’utilisateur et enregistrée en base.au moyen d’une boucle

    <BOUCLE_reponses(FORMULAIRES_REPONSES){id_formulaire=id du formulaire}{id_formulaires_reponse}>

    Avec la version 5.7.1 du plugin, la variable id_formulaires_reponse contient l’identifiant de la réponse qui vient d’être enregistrée en base. Mais depuis la version 6, elle est vide.

    Existe-t’il un moyen de contourner cette situation pour récupérer l’identifiant de cette réponse dans la boucle BOUCLE_reponses ?

    Merci par avance pour votre aide.
    Bruno.

    • J’ai traité le problème en remplaçant dans la section “Afficher ensuite” de la configuration du formulaire, la valeur “Afficher le formulaire, à nouveau” par “Rediriger vers une nouvelle adresse”.
      J’ai indiqué comme adresse l’URL de l’article contenant ce formulaire.

      Cette configuration fait que l’identifiant de la réponse est passé comme paramètre de l’URL appelée.

    • Maïeul

      Désolé je suis en déplacement. Pourriez vous ouvrir un ticket sur git.spip.net? Pour pas que l’on oublie de regarder

    Reply to this message

  • Je cherche à ajouter des classes aux composants des formulaires Formidable afin de modifier la présentation : en surchargeant les fichiers html du répertoire “saisies” dans mon plugin on peut bien ajouter des classes, mais pas partout.

    Exemple :
    -  ajout d’une classe au niveau de

    <div class="editer editer_input_1 saisie_input">


    -  ajout d’une classe au niveau de

    <div class="editer editer_email_1 obligatoire saisie_email>


    -  etc.

    Le but est d’utiliser les styles fournis par le framework plutôt que de styler les classes Formidable.
    Désolé si j’ai loupé un truc évident...

    Reply to this message

  • 1

    Bonjour à toutes et tous,

    Je travaille sur un projet où j’ai besoin de créer une fonctionnalité de réservation de créneaux horaires avec le plugin Formidable pour SPIP. L’idée est de permettre aux utilisateurs·trices de choisir un créneau horaire parmi ceux proposés, et une fois ce créneau sélectionné, il devrait être désactivé pour les futur·e·s utilisateurs·trices, un peu comme un Doodle.

    Voici les spécifications de ce que je cherche à réaliser :

    Date de début et fin : Les utilisateurs·trices doivent pouvoir choisir un créneau entre une date de début et une date de fin.
    Intervalle de temps : Les créneaux doivent être définis avec un intervalle qui peut être en minutes, heures ou jours.
    Lecture des réponses : Le système doit lire toutes les réponses soumises via le formulaire pour activer ou désactiver les créneaux horaires en conséquence.
    Enregistrement des résultats : Chaque sélection de créneau doit être enregistrée pour éviter les doubles réservations.
    Création d’un plugin : Il est possible qu’un plugin complémentaire soit nécessaire pour gérer cette logique de réservation.
    Je suis à la recherche de conseils sur la manière de mettre en œuvre cette fonctionnalité, ou si quelqu’un·e a déjà travaillé sur quelque chose de similaire, je serais ravi de connaître votre approche.

    Merci beaucoup pour votre aide !

    • Bonjour,

      J’ai enfin réussi à créer mon petit “doodle” personnalisé
      Premièrement, créer un formulaire à l’aide de formidable...
      Créer les informations pour le nom de l’utilisateur à l’aide d’un champ ligne de texte,
      Créer un champ case à cocher et entrer les créneaux
      Pour mon cas :
      Label = Vendredi 19 (comme j’insère le formulaire dans un événement, je ne dois pas préciser davantage la date)
      Liste des choix possibles

      choix1|19 h
      choix2|20 h
      choix3|21 h
      choix4|22 h
      choix5|23 h

      Je renseigne les autres éléments de mon formulaire (une autre case à cocher pour samedi et idem pour dimanche avec les créneaux nécessaires)

      Je créer ensuite un modèle que je nomme “lirecase.html” à placer dans le dossier /squelettes/modeles

      [(#CACHE{0})]
      [(#SET{checked_values, #ARRAY})]
      
      [(#SET{checked_values,#ARRAY})]
      <BOUCLE_reponses(FORMULAIRES_REPONSES spip_formulaires_reponses_champs){id_formulaire=#ENV{id}}{nom LIKE %checkbox%}>
        [(#SET{checked_values, #GET{checked_values}|push{#VALEUR}})]
      </BOUCLE_reponses>
      
      <BOUCLE_lire(DATA){source table, #GET{checked_values}}>
      [<style>(#VALEUR|choixcase)</style>]
      </BOUCLE_lire>

      Je créer enfin une petite fonction php dans un fichier mes_fonctions.html à placer dans le dossier /squelettes pour modifier le css de ma page

      <?php
      function choixcase($texte){
      	$string1=".vingt-quatre-sept .saisie_checkbox .choix_".substr($texte,2,strlen($texte)-4)." input[type='checkbox']{display:none!important;}";
      	$string2=".vingt-quatre-sept .saisie_checkbox .choix_".substr($texte,2,strlen($texte)-4)."::before{content:'☑';font-size:24px;height:24px;float:left;margin-left:7px;}";
      	$texte=$string1."\r\n".$string2;
      	return $texte;
      }
      ?>

      Ensuite, je peux insérer mes modèles dans mon événement où id=le numéro de mon formulaire...

      <lirecase|id=9>
      <formulaire|formidable|id=9>

      Les créneaux choisis par les utilisateurs apparaissent maintenant cochés dans ma page et un nouvel utilisateur ne peut plus les cocher.

    Reply to this message

Add a comment

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.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom