Le besoin est décrit ici : https://git.spip.net/spip-contrib-extensions/agenda/issues/79
Une autre méthode a été trouvée, mais ça peut toujours servir ailleurs.
Soit une saisie ayant une option appelée id_evenement
.
Le code suivant permet de passer la valeur de cette option dynamiquement depuis un squelette.
Avec tous les contrôles pour ne pas avoir d’erreur quand le paramètre n’est pas passé.
/**
* Paramétrer la saisie Événements afin de la restreindre à un événement précis
* @param array $flux
* @return array $flux : le flux modifié avec l'option de saisie rajoutée le cas échéant
**/
function agenda_formulaire_saisies(array $flux) : array {
$form = $flux['args']['form'];
if ($form === 'formidable') {
$args_du_form = $flux['args']['args'];
if (isset($args_du_form[2])
&& isset($args_du_form[2]['id_evenement'])
&& isset($args_du_form[2]['champ_evenement'])
) {
$id_evenement = $args_du_form[2]['id_evenement']; // Ce qui a été passé en troisième argument du formulaire
$champ_evenement = $args_du_form[2]['champ_evenement']; // Ce qui a été passé en troisième argument du formulaire
$flux['data'] = saisies_modifier($flux['data'], $champ_evenement, ['options' => ['id_evenement' => $id_evenement]], true) ;// Ajouter un id_evenement constant sur la saisie evenement
}
}
return $flux ;
}
Et dans le squelette :
#FORMULAIRE_FORMIDABLE{inscriptionevenement, #ARRAY{input_1, #SESSION{email},input_2, #SESSION{nom}, evenements_1, #ID_EVENEMENT}, #ARRAY{id_evenement, #ID_EVENEMENT, champ_evenement, evenements_1}}
A noter qu’il y a plus simple pour obtenir ce même comportement : activer l’option disable_avec_post
(désactiver mais poster) sur la saisie concernée. https://git.spip.net/spip-contrib-extensions/agenda/commit/61e6bf95db0e171e90cab5f92fb61a79d9c86312