balise de formulaire #VOIR_REPONSE (spip 3.2)

Hello, voilà j’ai un formulaire avec

@checkbox_1@
    Genre

Liste des choix possibles

    choix1|Féminin
    choix2|Masculin

je veux récuperer dans un squelette Féminin ou Masculin (suivant ce qui été saisi)
avec la balise #VOIR_REPONSE{checkbox_1,valeur_uniquement}

Je m’attendais à recevoir « Féminin » ou « Masculin » tout simplement, mais en réalité je reçois

<ul class="spip">
		<li class="choix">Féminin</li>
</ul>

est-ce normal ? y a-t-il une autre option ?

par exemple à partir #VALEUR ?

merci

Oui, c’est normal, dans le sens où tu a choisi une checkbox (j’imagine pour les personnes non binaires), donc cela genere une liste. Et en fait, valeur_uniquement veut dire « vue de la réponse, sans le label ». Et une vue, c’est ce qu’on a dans le dossier ‹ saisies-vues/ ›. On est d’accord la terminologie est pas terrible, car il s’agit bien d’une « valeur (mise en forme) uniquement ».

J’imagine qu’on pourrait élargir les choix, comme on a aussi sur les champs extras. Mais faudrait prendre le temps de réfléchir à tout les besoins et à la terminologie.

merci Maïeul,
au départ, n’ayant pas connu cette balise, j’ai tenté d’utiliser (comme pour les docs joints) la balise #VALEUR,
qui me retourne alors
a:1:{i:0;s:6:"choix1";}
dans laquelle j’ai bien la réponse attendue (il me faudra alors tester le choix pour l’information finale)

Cependant je n’arrive pas à récupérer « choix1 » ?? j’ai essayé toute sorte de unserialize sans succés !

malgré de la lecture de doc :frowning: , aurais-tu une piste de solution ??

Mon objectif final est de produire un tableau des réponses (pour un humain). [iel]

Bah il y a pas de raison, unserialize devrait bien unserialisé. Peut être faut-il que tu mette une asterisque sur le choix, pour avoir.

Mais sinon, #VOIR_REPONSE{brut} non ?

Et pour un tableau, pourquoi tu ne reprendrai pas tout simplement celui de formidable tablesorter ?

Le 04/05/2022 à 12:20, Marc Ferraton via Discuter de SPIP a écrit :

j’ai essayé toute sorte de unserialize sans succés

càd ? il n’y a qu’un seul unserialize en php, et

var_dump(unserialize('a:1:{i:0;s:6:"choix1";}'));

renvoie parfaitement la liste en question


RastaPopoulos

me retourne encore plus d’info :frowning:

<div class="champ afficher afficher_checkbox_1 saisie_checkbox">
	
	
	 
		<strong class="label">Genre</strong>
		<div class="valeur ">
		<ul class="spip">
	
	<li class="choix">Féminin</li>
	
	

	
</ul>
		</div>
	
	
</div>

je veux juste « Féminin » ou au pire « choix1 »

Oui, mais je ne suis pas bien expliqué … je veux obtenir choix1 à partir de unserialize …
donc #VALEUR|unserialize|??? => choix1
et c’est pour le |??? qui j’ai lu et effectué plein de tests sans obtenir le résultat escompté

bah oui car il n’y pas de moyen vraiment direct de le faire, il faut

  • deserialiser la description des saisies
  • chercher la saisie concerné
  • trouver le tableau data
  • utiliser table_valeur pour convertir et l’analyser pour faire tout cela.

Mais mon avis, c’est que du coup vu à la fois la complexité du code (surtout écrit en SPIP), et la genericité du besoin il faudrait fournir une telle option dans le core de formidable, de type #VOIR_REPONSE{lister_valeurs}.

je dois vous paraître un peu simplet , non ?

Ce que je trouve difficile est « d’utiliser la documentation ».
A cette instant je dois avoir au moins 80 onglets ouverts dans 6 ou 7 navigateurs pour écrire qques squelettes et apporter des modifications, heureusement que vous me guidiez avec les liens à suivre :slight_smile:

merci encore
je vais suivre vos conseils avec tablesorter …

peut-etre qqun aura un jour du temps disponible pour creer des MOOCs de formation :laughing:

Bah non pas de simplet. Là tu est face à un truc à structure complexe, avec des fonctions qui ne sont pas encore codées directement. Et donc forcément c’est difficile d’utiliser la documentation, puisque, par définition, ce n’est pas documenté vu que la fonction que tu cherche n’est pas encore écrite…

Ah mais il existe en fonction dans formidable un filtre qui devrait faire ce que tu veux |formidable_nettoyer_saisie_vue. Peux tu tester et dire si ca correspond bien ? si oui, je compléterai la doc @Marc_Ferraton

#VOIR_REPONSE{radio_1,valeur_uniquement}
retourne "<p>féminin</p>"
----------------
[(#VOIR_REPONSE{radio_1,valeur_uniquement}|formidable_nettoyer_saisie_vue)]
retourne simplement le contenu "féminin"

------ autre ------

avec
#VOIR_REPONSE{radio_1,valeur_uniquement}
retourne

<div class="champ afficher afficher_radio_1 saisie_radio">
	<strong class="label">Genre</strong>
		<div class="valeur ">
		<p>féminin</p>
		</div>
</div>

[(#VOIR_REPONSE{radio_1}|formidable_nettoyer_saisie_vue)]
retourne simplement
Genre féminin

c’est très bien o// o\\ o//
merci

encore un lien de doc HS dans Complément sur Formidable - SPIP-Contrib
Pour afficher les résultats dans spip, formidable fournit un modèle « formulaires_reponse ».

hi,
le summun de cette fonction serait plutôt de retourner une liste avec le nom réel du champ (label) du formulaire et la valeur du champ…
car dans son utilisation actuelle on ne sait distinguer entre le nom et le contenu

je ne sais ce que tu en penses ?

que j’ai pas compris ton besoin :stuck_out_tongue:

La fonction « formidable_nettoyer_saisie_vue » produit les textes du label et de la valeur (tout à la suite) et donc si l’on (je en l’occurence) souhaite utiliser une telle fonction c’est pour connaitre distinctement

  • d’un part le label
  • d’autre part la valeur
    ce que l’on ne peut pas identifier sauf dans le cas ou on a un seul mot pour label
    par exemple j’ai un label « Information complémentaire » et sa valeur « message accompagnement »
    et j’obtiens de la fonction « Information complémentaire message accompagnement » (difficilement à intégrer pour moi dans mon tableau …)
    au format de liste je pourrais obtenir « Information complémentaire » le label
    et « message accompagnement » la valeur

c’est une suggestion :slight_smile:

peut-etre y a-t-il une autre solution, car le probleme est à l’origine de la balise #VOIR_REPONSE
en effet si cette balise admettait un parametre (liste par exemple) on récupererait en effet cette liste sans passer pour se dépanner par formidable_nettoyer_saisie_vue

il suffit juste que tu le passe sur la balise avec les bon paramètres :slight_smile:

La valeur est [(#VOIR_REPONSE{radio_1,valeur_uniquement}|formidable_nettoyer_saisie_vue)]

Le label est

[(#VOIR_REPONSE{radio_1,label}|formidable_nettoyer_saisie_vue)]

1 « J'aime »

ah oui, c’est ce que j’étais entrain de regarder…
comment dit-on … tourner sept fois sa langue dans sa bouche … /o\