Saisies

Introduction

Créer un formulaire est une tâche toujours un peu répétitive : les champs ont souvent les mêmes propriétés, le même accompagnement (message d’erreur, explication, ...) et la même structure HTML. Ce plugin est un outil pour les développeur⋅euses ayant pour but de faciliter et d’accélérer l’écriture des formulaires.

Pour cela, Saisies propose plusieurs mécanismes (balises, API PHP) pour générer et manipuler plus facilement les champs des formulaires. De cette manière, les squelettes de formulaires sont :

  • plus lisibles : il n’y a que le strict nécessaire dedans, pas de répétition ;
  • intégrés au fonctionnement CVT de SPIP, notamment pour la gestion des erreurs sur les champs ;
  • automatiquement compatibles avec les recommandations HTML/CSS de SPIP.

La balise #SAISIE

Cette balise permet de générer une seule saisie en lui donnant directement les paramètres désirés. Chaque saisie va générer une ligne dans un formulaire, c’est-à-dire soit :

La balise a deux arguments obligatoires : le type du champ, et son nom HTML (attribut “name”). Toutes les autres options sont facultatives et servent à configurer le champ ; de ce fait, elles sont de la formes option=valeur.

La forme complète est donc la suivante :
#SAISIE{type, name, option=valeur, option2=valeur2, etc=etc}

Voici quelques exemples d’utilisation, pour comprendre l’approche.

Génère un simple champ texte, indiqué comme étant obligatoire :
#SAISIE{input, email, label=Votre courriel, obligatoire=oui}
 
Génère des boutons radios avec un choix "oui ou non" :
#SAISIE{oui_non, zanini, label=Tu veux ou tu veux pas ?}
 
Génère un choix multiple parmi les utilisateurs du SPIP :
#SAISIE{auteurs, destinataires,
    label=Destinataires du message,
    explication=Choisissez une ou plusieurs personnes à qui sera envoyé le message.,
    multiple=oui}

Comme vous le voyez, des champs qui peuvent être complexes, et fastidieux à écrire de manière complète, s’écrivent ici en quelques lignes.

Consultez également :

-  La référence des options de chaque saisie

-  Un complément de doc avancée sur les saisies

Multilinguisme

#SAISIE supporte le multilinguisme. Dans ce cas, attention de bien utiliser la syntaxe complète avec les crochets :

  • #SAISIE{input, annee, label=<:monplugin:annee:>,obligatoire=oui} ne fonctionne pas ;
  • [(#SAISIE{input, annee, label=<:monplugin:annee:>,obligatoire=oui})] fonctionne.

Afficher les erreurs

Saisie gère nativement l’affichage des erreurs.

Si la fonction CVT verifier() retourne une erreur du même nom celle ci sera affichée entre le label et le champ.

  • Pour la saisie [(#SAISIE{input, annee, label=<:monplugin:annee:>})]
  • si verifier() retourne : $erreurs['annee'] = "Une erreur"
  • alors <span class="erreur_message">Une erreur</span> sera affichée juste avant l’input.

Enregistrer des tableaux

La norme HTML permet de gérer des réponses de formulaire sous la forme de tableau. Il est recommandé d’utiliser alors le formalisme suivant : tableau/variable.

  1. [(#SAISIE{input, annee/debut, label=<:monplugin:annee:>})]

Permettra de récupérer en PHP

_request('annee');
// array('debut' => 'valeur')

La forme HTML classique [(#SAISIE{input, annee\[debut\], label=<:monplugin:annee:>})] fonctionne aussi.


Attention, pour utiliser tout ce qui suit, vous devez installer aussi le plugin YAML.


Déclarer un formulaire CVT complet en PHP

Saisies augmente l’API CVT de SPIP avec une fonction …_saisies() afin de déclarer l’ensemble des champs d’un formulaire et leur vérification dans une unique syntaxe.

Grace à ce mécanisme, pour les cas les plus courants, les fonctions charger() et verifier() deviennent facultatives. Saisies s’occupera de tout suivant votre déclaration. Seule la fonction traiter() restera toujours de votre ressort.

De même, par défaut, vous n’avez plus à vous occuper du squelette. Il doit toujours être présent, avec le même nom que votre fichier PHP dans le dossier formulaires/, mais vous pouvez le laisser totalement vide. Saisies s’occupera de générer le bon HTML complet.

Dans le PHP, au côté des autres fonctions, vous devez alors déclarer les saisies :

formulaires_monformulaire_saisies_dist() {
    $saisies = array();
 
    return $saisies;
}

Cette fonction doit retourner un tableau PHP contenant la liste de toutes vos saisies suivant un formalisme attendu.

Le tableau doit respecter les points suivant :

  • Chaque ligne du tableau d’ensemble est une saisie, elle-même étant décrite dans un tableau. L’ordre des éléments sera l’ordre des saisies.
    $saisies = array(
    	array(), // une saisie
    	array(), // une saisie
    	array(), // une saisie
    );
  • Chaque saisie individuelle est un tableau de la forme :
    array(
    	'saisie' => 'input',
    	'options' => array(
    		'nom' => 'nom',
    		'label' => 'Votre nom',
    		'size' => 50
    	),
    );
  • Les saisies qui acceptent des enfants (comme les fieldsets) les placent dans une clé “saisies” qui contiendra un tableau ayant la même structure que le tableau global :
    $un_fieldset = array(
    	'saisie' => 'fieldset',
    	'options' => array(
    		'nom' => 'mon_groupe',
    		'label' => 'Mon groupe de champ'
    	),
    	'saisies' => array(
    		array(), // une autre saisie
    		array(), // une autre saisie
    		array(), // etc
    	)
    );

Appliquer une vérification

Pour des vérifications simples et uniques, avec le plugin API de Vérification vous pouvez en plus déclarer une vérification à appliquer sur chacune de vos saisies.

Il faut alors ajouter une clé “verifier” selon ce formalisme :

array(
	'saisie' => 'input',
	'options' => array(
		'nom' => 'nom',
		'label' => 'Un nombre entre 100 et 500',
		'obligatoire' => 'oui',
	),
	'verifier' => array(
		'type' => 'entier',
		'options' => array(
			'min' => 100,
			'max' => 500
		),
	),
);

Options globales

Il est possible aussi de déclarer quelques options d’affichage qui sont globales à l’ensemble du formulaire. Elles sont alors placées dans une clé “options” à la racine du tableau.

$saisies = array(
	'options' => array(
		// Changer l'intitulé du bouton final de validation
		'texte_submit' => 'Valider c’est gagné',
 
		// Transformer votre formulaire en multi-étapes
		// Chaque fieldset racine sera reconnu comme étant une étape !
		'etapes_activer' => true,
 
		// Changer l'intitulé du bouton suivant
		'etapes_suivant' => 'Suivantissime',
 
		// Changer l'intitulé du bouton précédent
		'etapes_precedent' => 'Previously on Lost',
	),
	array(), // une saisie
	array(), // une saisie
	array(), // une saisie
);

La balise #GENERER_SAISIES

Dans la plupart des cas vous n’avez pas à l’utiliser vous-même. Il se peut cependant que vous désiriez gérer malgré tout le squelette de votre formulaire.

Cette balise permet de générer toutes les saisies d’un formulaire, en une seule fois. Pour cela on lui passe en paramètre le tableau de description.

Exemple d’utilisation :

<div>
	#GENERER_SAISIES{#ENV{_saisies}}
</div>

On notera l’emploi d’un _ en préfixe de la variable d’environnement. Cela permet que les guillemets présents dans les options ne soient pas transformés en entités HTML [1].

La balise #VOIR_SAISIES

Cette balise permet d’afficher toutes les valeurs saisies après validation d’un formulaire. On lui passe en paramètre deux arguments :

  1. le tableau de description des saisies (au même format que pour #GENERER_SAISIES)
  2. un tableau des valeurs saisies

Exemple d’utilisation, dans le squelette d’un formulaire :

[(#EDITABLE|non)
	#VOIR_SAISIES{#ENV{mes_saisies}, #ENV}
]

Problème avec Xdebug

Si vous êtes développeur et que vous utilisez le logiciel Xdebug, il existe un problème connu : par défaut celui-ci affiche une erreur à partir d’un certain niveau d’imbrication de fonctions PHP (“nesting level” dirait Shakespeare).

Le niveau d’imbrication autorisé par défaut est relativement bas, mais on peut le modifier avec une variable. Vous devez donc ajouter cela dans votre configuration PHP/Xdebug :

[xdebug]
xdebug.max_nesting_level = 200 ou 500 ou plus…

Et hop, ça remarche.

updated on 2 October 2019

Discussion

141 discussions

  • 3

    La tentative de mise à jour de Saisies pour formulaires 3.27.7 - stable vers 3.28.0 fait péter le site avec une ribambelle de plugins en erreur.
    La 1e erreur concerne : SPIP Bonux 3.4.6 - stable (désactivé de facto)

    • met a jour aussi bonux vers 3.5.0

    • Pour info, sur le carnage....
      Gestion des plugins

      Erreurs survenues
      Impossible d’activer le plugin ../plugins/auto/saisies/v3.28.2
      Utilise le plugin SPIP_BONUX en version ≥ 3.5.0.
      Impossible d’activer le plugin ../plugins/auto/jeux/v3.4.4
      Nécessite le plugin SAISIES en version ≥ 2.28.0.
      Impossible d’activer le plugin ../plugins/auto/gis/v4.47.9
      Nécessite le plugin SAISIES en version ≥ 3.27.5.
      Impossible d’activer le plugin ../plugins/auto/gisgeom/v1.11.7
      Nécessite le plugin GIS en version ≥ 4.42.0.
      Impossible d’activer le plugin ../plugins/auto/inserer_modeles/v1.3.4
      Nécessite le plugin SAISIES en version ≥ 2.28.0.
      Impossible d’activer le plugin ../plugins/auto/contact/v0.16.5
      Utilise le plugin INSERER_MODELES en version ≥ 1.0.0.
      Impossible d’activer le plugin ../plugins/auto/odt2spip/v3.0.6
      Nécessite le plugin SAISIES en version ≥ 2.28.0.
      Impossible d’activer le plugin ../plugins/auto/agenda/v3.32.1
      Utilise le plugin FULLTEXT en version ≥ 1.0.0.
      Utilise le plugin SAISIES en version ≥ 3.27.0.
      Utilise le plugin PAGES en version ≥ 1.3.10.
      Impossible d’activer le plugin ../plugins/auto/fullcalendar_facile/v2.4.3
      Nécessite le plugin AGENDA en version ≥ 3.18.4.
      Impossible d’activer le plugin ../plugins/auto/albums/v3.5.7
      Utilise le plugin SAISIES en version ≥ 1.40.0.
      Impossible d’activer le plugin ../plugins/auto/media/v1.4.10
      Utilise le plugin INSERER_MODELES en version ≥ 1.1.11.
      Impossible d’activer le plugin ../plugins/auto/rainette/v3.6.1
      Nécessite le plugin SAISIES en version ≥ 3.12.7.
      Impossible d’activer le plugin ../plugins/auto/sarkaspip/v3.4.9
      Utilise le plugin CONTACT en version ≥ 0.9.0.
      Utilise le plugin GRAVATAR en version ≥ 1.5.0.
      Utilise le plugin NOTATION en version ≥ 2.0.4.
      Utilise le plugin PHOTO_INFOS en version ≥ 2.0.0.
      Utilise le plugin RAINETTE en version ≥ 1.5.3.
      Utilise le plugin RECOMMANDER en version ≥ 1.0.3.
      Utilise le plugin SHOUTBOX en version ≥ 0.2.0.
      Utilise le plugin SOMMAIRE en version ≥ 1.0.6.
      Utilise le plugin SPLICKR en version ≥ 0.4.5.
      Utilise le plugin TICKETS en version ≥ 2.9.1.
      Utilise le plugin TODO en version ≥ 2.0.6.
      Utilise le plugin ZENGARDEN en version ≥ 2.5.1.
      Impossible d’activer le plugin ../plugins/auto/cvtupload/v1.17.2
      Utilise le plugin SAISIES en version ≥ 3.18.1.
      Impossible d’activer le plugin ../plugins/auto/formidable/v3.42.5
      Nécessite le plugin SAISIES en version ≥ 3.26.0.
      Impossible d’activer le plugin ../plugins/auto/timecircles/v1.5.3.23
      Utilise le plugin AGENDA en version ≥ 3.19.0.
      Actions réalisées
      La mise à jour du plugin « Saisies pour formulaires » (de la version : 3.27.7 à 3.28.2) s’est correctement déroulée

    • Vous avez pas eu de chance, au sens où vous avez recu la mise à jour de saisie sans la mise à jour de bonux. Mettez à jour bonux, puis réactivez vos plugins.

    Reply to this message

  • 5

    Bonjour,
    En faisant une mise à jour du plugin vers la version 3.22.0, le site a été bloqué.
    En revenant à la version antérieure 3.21.2, ce problème a été réglé.
    SPIP 3.2.4
    Cordialement

    • Que signifie “le site a été bloqué” ? Si tu as une page blanche tu dois configurer PHP pour afficher les erreurs, afin de savoir vraiment ce qui se passe.
      https://www.spip.net/fr_article4453.html#erreurs

    • Bonjour,

      Après la mise à jour du plugin, j’ai bien une page d’erreurs PHP. Je n’ai pas fait de capture d’écran.
      Je l’ai désactivé et réinstallé. Le plugin reste obsolète.

      Cordialement

    • bah en l’absence de message d’erreur, ca va être dur d’aider...

    • Merci, avec la version 3.22.1 j’ai pu mettre à jour et cela fonctionne.

    • la version 3.22.1 ne portait pas sur ce problème, puisque je le connaissais pas ....

    Reply to this message

  • 3

    Bonsoir,

    Je n’arrive plus à configurer mes groupes de champs et mes champs ’explication’ dans champs extras, je pense qu’une mise à jour récente en est la cause. Est-ce que SAISIES en est la cause?

    Bien à vous,
    Jul

    Reply to this message

  • Bonjour,

    J’ai une colle pour les meilleurs SAISISTES dans les parages.

    J’ai fais un super formulaire CVT en exploitant à 200% SAISIES et c’est top ;) Par contre j’arrive à mes limites en souhaitant mettre de l’ajax et ne pas trop me salir avec du JS inutile.

    Mon formulaire étant AJAXé via la class ’ajax’, j’aimerais pouvoir le recharger pour lui renvoyer une données saisies par l’utilisateur, je m’explique.

    Il s’agit d’un formulaire d’inscription, et j’aimerais généré via SAISIES autant de champs (nom, prenom, emails) que nécessaire, selon le nombre de personnes spécifié par l’internaute via des ’selects’.

    Pour ce faire j’ai commencé par rajouter du javascript dans l’html pour pouvoir déclarer un attribut onChange à mes selects... chose qui n’est pas possible via SAISIES (sauf erreur). Puis un script lancant un ’ajaxReload’ pour renvoyer le nouveau nombre d’inscrits en argument du formulaire, pour généré via une boucle mes champs (prenoms...), enfin bref, ca marche po.

    L’ajaxReload ne fait rien du tout... Je ne suis pas d’ailleurs très sur de la syntaxe. Car AjaxReload prends en argument l’id du bloc ajax pour un inclure, mais pour un formulaire CVT c’est moi évident.

    Donc si quelqu’un à un exemple sous la main, je suis preneur.

    En vous remerciant,
    JuL

    Reply to this message

  • 5
    Voillemont

    Bonjour, j’ai mis un sondage réalisé avec formidable.
    Depuis peu, j’ai ses messages d’erreur qui s’affichent dans les résultats du sondage. J’ai cherché pour voir de quoi ça vient sans trouver.
    Une idée ?

    Merci d’avance pour votre aide.

    Warning: array_keys() expects parameter 1 to be array, null given in /home/chipfm/public_html/plugins/auto/saisies/v3.18.5/inc/saisies_lister.php on line 135

    Warning: array_shift() expects parameter 1 to be array, null given in /home/chipfm/public_html/plugins/auto/saisies/v3.18.5/inc/saisies_lister.php on line 136

    Warning: Invalid argument supplied for foreach() in /home/chipfm/public_html/plugins/auto/saisies/v3.18.5/inc/saisies_lister.php on line 141

    • Pouvez vous envoyer un export yaml du formulaire ? cela me permettrait de remonter la piste.

      A priori, ce n’est pas très grave. Cela étant, il faudrait demander à votre hébergeur, ou régler vous même, pour que les messages d’erreurs ne s’affichent pas publiquement.

    • Christian Voillemont

      merci pour votre aide.

      J’ai fait l’export., comment vous l’envoyer ?

      Comment puis je régler pour que les messages d’erreur ne s’affichent pas ?

    • vous pouvez m’écrire à monprenom@monprenom.net

      pour le réglage de l’affichage des erreurs, ca depnd des hebergeurs. Mais dans tous les cas

      ini_set('display_errors', 0);

      dans votre fichier mes_options.php pourrait masquer cela. Cela étant, ce serait bien de voir avec votre hebergeur pour que ce soit masqué par défaut.

    • christian voillemont

      Merci, je regarde ça tout de suite.
      Je suis long a répondre car j’ai des coupures internet fréquentes.

    • la version 3.36.6 du plugin Formidable devrait corriger le problème.

    Reply to this message

  • 4

    Bonjour,

    avec la version 3.12.6, je n’arrive plus à définir de valeurs personnalisées pour la saisie oui_non.

    J’obtiens une erreur “Valeur postée non acceptable.”

    la fonction oui_non_valeurs_acceptables($valeur, $description) semble exclure en effet la possibilité d’utiliser de valeurs personnalisées.

    • arf, j’ai du oublier de mettre cela, parce que je savais pas que c’était possible (pas déclaré dans le yaml)

      j’essaie de m’occuper de cela présentement.

    • voilà, la version 3.12.7 devrait résoudre le problème.

    • Encore un bug ou je comprends mal le fonctionnement

      La valeur par défaut dans« oui_non» et «selection» n’est pas pris en compte.

      Actuellement, dans les saisies correspondantes, la valeur est définie

      1. #SET{valeur,#ENV{valeur_forcee,#ENV{valeur}}|is_null|?{#ENV{defaut},#ENV{valeur_forcee,#ENV{valeur}}}}

      et ma valeur défaut est ignoré.

      Si je remplace par

      1. #SET{valeur,#ENV{valeur_forcee,#ENV{valeur,#ENV{defaut}}}}

      ma valeur défaut est bien prise en compte.

      Spip 3.2.3 avec php 7.2

    Reply to this message

  • 16

    Bonjour,
    depuis la mise à jour du plugin vers sa dernière version disponible (v3.12.5) sous SPIP 3.2.1, j’obtiens à la validation d’un formulaire :

    ERREUR: fonction execute_pipeline_saisies_verifier absente : pipeline desactive

    Une idée de la raison?

    • Quelle était la précédente version de saisies? on n’a pas touché recemment aux pipelines.

      Est-ce que tu as essayé en supprimant le fichier tmp/cache/charger_pipelines.php?

    • Merci de ta réponse rapide et de ton aide. Oui j’ai vidé tous les caches. Je ne me souviens plus la version précédentes de saisies installée, mais ma dernière mise à jour des plugins ne remonte pas plus loin que novembre dernier. J’ai fait des tests avec différents formulaires, et j’obtiens toujours le même message.

    • Ce sont des formulaires de SPIP? ou des formulaires formidable?

      tu as mis à jour tous les plugins? ou seulement saisies?

    • Je pense que la version 3.12.6 binetôt disponible devrait résoudre ce problème, mais à confirmer car je n’arrive pas à le reproduire.

    • Cela se produit avec les formulaires Formidable et oui j’ai mis à jour tous les plugins. J’espère que cela n’est pas trop grave. Ok je verrais avec la MAJ du plugin. Merci de ton attention.

    • Aurelien

      J’ai le même log étrange :
      fonction execute_pipeline_saisies_verifier absente : pipeline desactive

      Et je ne parviens pas a en trouver l’origine, d’autant plus que les vérifications fonctionnent très bien, et que rien ne semble désactivé (SPIP 3.2.3 [24211] & API Verifier 1.8.2).

      Bonne soirée,

    • Effectivement il y a un problème. Même message.
      Celui-ci n’apparait pas lorsque le formulaire n’utilise pas afficher_si
      C’est cette utilisation qui génère ce problème.
      Soit notre appel n’est pas convenablement fait, ce qui est probable, soit il y a un autre souci.
      Je travaille sur la question...

    • Non, après un vider le cache, l’erreur se maintien et cela ne semble pas lié à “afficher_si”
      Le test se base sur :
      https://contrib.spip.net/Un-formulaire-C-V-T-avec-Saisies-par-l-exemple
      et le log
      2019-01-31 09:00:43 ::1 (pid 60629) :Pri:ERREUR: fonction execute_pipeline_saisies_verifier absente : pipeline desactive

    • Trouvé. C’était yaml. Le plugin en version test (2.0.10 - en test) n’est pas très sympathique avec SAISIES.

    • Mais de quoi c’est yaml ? Quel rapport avec le pipeline “saisies_verifier” ? Vous avez bien la dernière version de Saisies avec la modif de Maieul qui déclare le pipeline manquant, qui n’était pas déclaré depuis le début ?
      https://zone.spip.net/trac/spip-zone/changeset/113611/spip-zone

    • J’avoue non plus ne pas voir en quoi il y pourrait y avoir un lien avec yaml.

      En attendant, la question reste : quelle version du plugin saisies utilisez vous ?

    • J’étais sous SAISIES 3.12.4, j’ai tout resintallé (dont SAISIES 3.12.6 ) et j’ai eu ce message :
      Erreur dans les plugins :
      /Applications/MAMP/htdocs/plugins/yaml_v2/yaml_fonctions.php,
      /Applications/MAMP/htdocs/plugins/verifier/verifier_fonctions.php
      Après le retrait de Yaml, tout se passe bien.
      D’ou ma conclusion, certainement hâtive...

    • est tu repassé par la page d’admin des plugins après reinstall?

    • Oui, car j’avais même réinstallé SPIP. J’avais fait table rase en local pour tout reprendre à zéro et comprendre ce qui se passait.

    • bah c’est peut être une coincidence alors.

      le mieux reste encore d’installer le plugin eu mode automatique, pour être sur d’avoir la dernière version à chaque fois.

    • En tout cas plus de problème et merci pour votre aide (ainsi que pour cette API Verfier et ce plugin SAISIES super).

    Reply to this message

  • 3

    Je regardais pour rendre obligatoire une saisie “radio” (pour une vérif html5) et en testant je me rends compte que ca ne fonctionne pas tip top.
    Et le fichier radio.html ne fait aucune mention d’un test sur obligatoire.

    1. [(#HTML5|oui)[(#ENV{obligatoire}|et{#ENV{obligatoire}|!={non}}|oui) required="required"]]

    C’est voulu ?

    Du coup je surcharge ma saisie avec le code ci-dessus.

    Reply to this message

  • 6

    Bonjour à tous,
    Je rencontre un soucis avec l’utilisation du paramètre “afficher_si” dans un formulaire dont les champs sont généré via PHP, puis en exploitant la balise #GENERER_SAISIE.

    Voici un morceau de mon formulaire CVT en php :

    $saisies[]= array(
                'saisie' => 'selection',
                'options' => array(
                    'nom' => 'select_type_inscrit',
                    'label' => 'Type d\'inscrit',
                    'obligatoire' => 'oui',
                    'datas' => array(
                        'membre' => 'Membre à jour',
                        'non_membre' => 'Non-membre',
                        'public' => 'Personne sans compte'    
                    ),
                    'defaut' => 'membre'
                )
            );
    $saisies[]= array(
                'saisie' => 'input',
                'options' => array(
                    'nom' => 'prenom_inscrit',
                    'label' => 'Prénom',               
                    'afficher_si' =>  '@select_type_inscrit@=="public"'
                ),            
            );

    Je souhaiterais n’afficher dans mon formulaire le champ prenom_inscrit que si le champ précédent est égal à ’public’.

    Malheureusement, je me retrouve avec une erreur Javascript :
    Uncaught SyntaxError: Unexpected token &

    On peut effectivement constater que dans le javascript généré on voit cela :

    1. :val()=&quot;public&quot;)

    Les guillemets sont remplacés par leur code html, je ne pense que cela soit normal, et provoque ensuite une erreur ...


    Voici le début du code javascript généré

    1. $(function(){chargement=true;verifier_saisies_1944237048 = function(form){if ($(form).find("[name='select_type_inscrit']").val()=&quot;public&quot;) {$(form).find(".editer_prenom_inscrit").show(400);

    Coté html, je vois que mon champ est bien généré :

    <div class="editer editer_prenom_inscrit saisie_input" data-afficher_si="@select_type_inscrit@="public"">
    	<label for="champ_prenom_inscrit">Prénom</label>
    	<input type="text" name="prenom_inscrit" class="text" id="champ_prenom_inscrit">
    </div>

    J’ai essayé de nombreuses syntaxes différentes pour définir la condition mais rien n’y fait...

    Merci de vos lumières !
    Jul

    • SPIP protège automatiquement les guillemets pour les variables passé au chargement du formulaire. D’où le “"”.

      Mais tu peux désactiver cela en mettant un _ devant le nom de la variable dans le tableau de retour.

      function formulaires_test_charger() {
      	$saisies[]= array(
                  'saisie' => 'selection',
                  'options' => array(
                      'nom' => 'select_type_inscrit',
                      'label' => 'Type d\'inscrit',
                      'obligatoire' => 'oui',
                      'datas' => array(
                          'membre' => 'Membre à jour',
                          'non_membre' => 'Non-membre',
                          'public' => 'Personne sans compte'
                      ),
                      'defaut' => 'membre'
                  )
              );
      $saisies[]= array(
                  'saisie' => 'input',
                  'options' => array(
                      'nom' => 'prenom_inscrit',
                      'label' => 'Prénom',
                      'afficher_si' =>  '@select_type_inscrit@==\'public\''
                  ),
      					);
      	return array('_saisies' => $saisies);
      }

      et

      1. #GENERER_SAISIES{#ENV{_saisies}}
    • Merci Maïeul !
      Une réponse simple et efficace ! Je viens de tester, et cela fonctionne fort bien !

      J’avoue que je n’aurais jamais trouvé !

      Malgré tout est-ce normal comme comportement vu que c’est obligé d’utilisé les ’ ou ’’ dans la condition de afficher_si ?
      Il n’y a pas mention de cette subtilité dans la doc, est-ce un oubli d’après toi ou c’est moi qui utilise cet outil de manière non-conventionnelle ?

      un grand Merci !

    • En fait:
      -  le comportement de protection des attributs relève du comportement de CVT. Et c’est donc documenté dans la doc de CVT : https://www.spip.net/fr_article4151.html
      -  la présente doc a été écrite avant que _afficher_si soit implémenté.

      Je viens de corriger ici ainsi que dans la doc spécifique à _afficher_si.

    • J’ai eu le même problème avant cette discussion et je l’avais résolu par :

      1. [(#GENERER_SAISIES{#ENV{saisies}}|html_entity_decode)]

      Mais bon je ne sais pas si c’est le mieux :)

    • bof, c’est pas terrible, car tu pourrais avoir besoin d’entité encodées pour x raison.

    • Bon et bien je vais adopter l’astuce du underscore :)

    Reply to this message

  • 5

    bonjour,
    je télécharge saisie depuis cette page
    Version 3.8.3
    (ZIP – 193.5 ko) SPIP 3.0, SPIP 3.1, SPIP 3.2
    quand j’active le plugin il me met dans la page des plugins actif :
    Saisies pour formulaires 2.28.0 - stable
    Écrire facilement des champs de formulaires
    Est ce normal ? quelle est vraiment la version
    merci

    • je suis étonné. La version marqué “saisies_v3” contient bien la version 3.x de saisies

    • Bonjour,
      merci de me répondre., entre temps, pressé par une démo à faire, j’ai posé la question sur la liste et j’ai eu cette réponse de Frank
      « ce qui c’est passé, c’est que au moment de la création de la 3eme branche, il y a eu oubli de faire l’ajout du zip dans l’article puisque ce n’est pas automatique (contrairement à plugin.spip). Je viens de mettre à jour les zips dans l’article de contrib😊»

      Si j’ai bien compris les différentes réponses, il est préférable :
      -  En manuel de prendre en priorité sur plugin.spip
      -  En automatique suivre la procédure expliqué sur https://www.spip.net/fr_article3396.html

    • A oui, c’est bien possible (même si normalement c’est censé être automatique, ca bug)

    • Oui normalement c’est bien automatique (mais pas immédiat) : d’abord ça génère les ZIP, ça se met à jour sur plugins.spip (après déjà un délai) et ensuite un autre robot reporte ces ZIP sur Contrib (deuxième délai).

      Je sais pas si des trucs ont pu sauter avec la mise à jour des squelettes de Contrib…

    • Rasta: c’est surtout que le robot qui met à jour sur contrib le fait de la mnière aléatoire (il prend x plugin au hasard) et pas de manière linéaire...

      LA sortie de la version 3 de saisies date de bien avant la nouvelle version de contrib

    Reply to this message

Comment on this article

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