saisies et boucle data

Dans un formulaire, j’ai un select qui va chercher les options par une
boucle DATA

                 <BOUCLE_choix_image(DATA){source glob, 

…/squelettes/images/pointeurs/{.cur,.ani}}>
#SET{val1,#VALEUR|replace{…/squelettes/}}
<option
value="#GET{val1}"[(#ENV{#GET{name}}|=={#GET{val1}}|?{‹ selected=« selected » ›,’’})]>
#VALEUR

Comment faire la même chose avec un formulaire écrit avec saisies ?

JC

le plus simple est de créer ta propre saisie qui

a. Rempli un tableau #SET{data} (tableau clé->valeur)
b. Appelle la saisie selection (via INCLURE) en passant data=#GET{data}

C’est la notion de « saisie hérité », il y a un § sur cela dans la doc « Créer ses propres saisies »

Avec le lien : Créer ses propres saisies - SPIP-Contrib

Oui, merci, je connais les liens des articles de saisies.

J’y suis presque :

J’ai donc créé une saisie avec

#SET{data,#ARRAY}
<BOUCLE_choix_image(DATA){source glob, …/squelettes/images/pointeurs/{.cur,.ani}}>
#SET{val,#VALEUR|replace{…/squelettes/images/pointeurs/}}
#SET{data, #GET{data}|push{#GET{val}}}
</BOUCLE_choix_image>

<INCLURE{fond=saisies/_base,env,type_saisie=selection,data=#GET{data}} />

et j’appelle cette saisie avec

            array(
                'saisie' => 'pointeur',
                'options' => array(
                    'nom' => 'pointeurbody',
                    'label' => '<:escal:pointeur_general:>',
                    'option_intro' => '<:escal:pointeur_defaut:>',
                    )
                ),

J’ai bien mon menu déroulant qui s’affiche mais à l’affichage j’obtiens ceci

image

Avec donc un double affichage de « Pointeur général » avec un décalage.

JC

il faut que tu déclare ta saisie comme autonome si tu appelle directement saisies/_base.html (je crois que je l’avais écrit d’ailleur dans l’article !)

Ah d’après l’exemple fourni de la saisie choix_couleur qui hérite de la saisie radio, j’ai écrit le inclure sur le même modèle pour ma saisie qui hérite de la saisie selection.

Donc que faut-il écrire ?
Ou alors faut-il faire un .yaml ?

JC

···

Le 26/05/2021 à 18:21, Maïeul Rouquette via Discuter de SPIP a écrit :

Maïeul Rouquette maieul
Mai 26

il faut que tu déclare ta saisie comme autonome si tu appelle directement saisies/_base.html (je crois que je l’avais écrit d’ailleur dans l’article !)


Voir le sujet ou répondre à ce courriel pour répondre.

Vous recevez ce courriel car vous avez activé la liste de diffusion.

Pour se désabonner de ces courriels, cliquez ici.

Et quand je lis

Toutefois, certaines saisies peuvent être dites « autonomes » et ne pas passer par ces squelettes /_base.html.

je comprends que si on passe par /_base.html alors, elle n’est pas autonome.

Toutefois, certaines saisies peuvent être dites « autonomes » et ne pas passer par ces squelettes /_base.html.

Une saisie non autonome ne passe pas automatiquement par _base (ie sans appel explicite de ta part).

Mais là c’est TOI qui appelle base. Et je l’explique clairement le 2 modes possible d’inclusion :

  • Soit le balisage englobant est spécifique à la saisie héritée, comme pour les saisies radio/checkbox/case [2]. Dans ce cas la saisie héritière doit être déclarée comme autonome. L’inclusion sera de la forme <INCLURE{fond=saisies/_base,env,type_saisie=<nom de la saisie héritée>,<paramètres predefini par la saisie héritière...>} /> (pour la saisie). On prêtera attention au fait que le type de saisie doit être précisé après le passage de env.
  • Soit le balisage englobant est standard (si l’on hérite par exemple d’une saisie input). Dans ce cas, la saisie héritière n’est pas autonome. L’inclusion sera de la forme <INCLURE{fond=saisies/<nom de la saisie héritée>,env,<paramètres predefini par la saisie héritière...>} /> (pour la saisie).

Du coup il faut non seulement que tu fasse ton inclusion, mais EN PLUS que tu déclare ta saisie comme autonome (via un pipeline, c’est expliquer dans l’article).

Quant au .yaml, cela n’a rien à voir, comme je l’explique en début d’article c’est pour décrire comment configurer une saisie (par exemple si tu veux la proposer dans formidable/interface champ extra)

1 « J'aime »

J’ai corrigé le paragraphe concernant le passage par _base qui était un peu trop simplifié.

Ok j’ai donc juste modifié mon inclure ainsi

<INCLURE{fond=saisies/selection,env,data=#GET{data}} />

Merci