Carnet Wiki

Pipeline pour modifier une saisie d’un formulaire Formidable

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

RealET - Mise à jour :11 novembre 2023 à 19h55min