Carnet Wiki

Pipeline pour modifier une saisie d’une saisie d’un formulaire (Formidable)

Version 4 — Octobre 2023 RealET

Une autre méthode a été trouvée pour le besoin, mais ça peut toujours servir ailleurs.

Le besoin est décrit ici : https://git.spip.net/spip-contrib-extensions/agenda/issues/79

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]['champevenement'])
			) {
			$id_evenement = $args_du_form[2]['id_evenement']; // Ce qui a été passé en troisième argument du formulaire
			$champevenement = $args_du_form[2]['champevenement']; // Ce qui a été passé en troisième argument du formulaire


$flux['data'] = saisies_modifier($flux['data'], $champevenement, ['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, champevenement, evenements_1}}