Skip to content
Extraits de code Groupes Projets
Valider 3c3fb0ed rédigé par marcimat's avatar marcimat
Parcourir les fichiers

- permettre plusieurs formulaires CVT identiques sur une même page sans qu'ils...

- permettre plusieurs formulaires CVT identiques sur une même page sans qu'ils attrappent tous en même temps les valeurs soumises par un des formulaires. Un formulaire ne récupère que les valeurs qu'il a pu envoyer.
- pour remettre le fonctionnement précédent, il est possible d'envoyer via la fonction charger() du formulaire CVT le paramètre "_forcer_request" valant "true".
parent ec27bb05
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -35,6 +35,7 @@ function balise_FORMULAIRE__dyn($form)
// recuperer les arguments passes a la balise
$args = func_get_args();
// deux moyen d'arriver ici : soit #FORMULAIRE_XX reroute avec 'FORMULAIRE_XX' ajoute en premier arg
// soit #FORMULAIRE_{xx}
if (substr($form,0,11)=="FORMULAIRE_")
......@@ -48,14 +49,32 @@ function balise_FORMULAIRE__dyn($form)
if (!find_in_path("formulaires/$form.html"))
return '';
$erreurs = isset($_POST["erreurs_$form"])?$_POST["erreurs_$form"]:array();
$message_ok = isset($_POST["message_ok_$form"])?$_POST["message_ok_$form"]:"";
$message_erreur = isset($erreurs['message_erreur'])?$erreurs['message_erreur']:"";
$valeurs = array();
$editable = (!isset($_POST["erreurs_$form"])) || count($erreurs) ||
(isset($_POST["editable_$form"]) && $_POST["editable_$form"]);
// tester si ce formulaire vient d'etre poste (memes arguments)
// pour ne pas confondre 2 #FORMULAIRES_XX identiques
$je_suis_poste = false;
if ($post_form = _request('formulaire_action')
AND $post_args = _request('formulaire_action_args')) {
$post_args = decoder_contexte_ajax($post_args,$post_form);
if ($args === $post_args){
$je_suis_poste = true;
}
}
// init
$erreurs = $valeurs = array();
$message_ok = $message_erreur = "";
$editable = true;
// si le formulaire vient d'etre poste, on recupere les erreurs
if ($je_suis_poste){
isset($_POST["erreurs_$form"]) || ($erreurs = $_POST["erreurs_$form"]);
isset($_POST["message_ok_$form"]) || ($message_ok = $_POST["message_ok_$form"]);
isset($erreurs['message_erreur']) || ($message_erreur = $erreurs['message_erreur']);
$editable = (!isset($_POST["erreurs_$form"])) || count($erreurs) ||
(isset($_POST["editable_$form"]) && $_POST["editable_$form"]);
}
$valeurs = array();
if ($charger_valeurs = charger_fonction("charger","formulaires/$form/",true))
$valeurs = call_user_func_array($charger_valeurs,$args);
$valeurs = pipeline(
......@@ -81,12 +100,16 @@ function balise_FORMULAIRE__dyn($form)
$action = self();
// recuperer la saisie en cours si erreurs
foreach(array_keys($valeurs) as $champ){
if (substr($champ,0,1)!=='_'){
if (($v = _request($champ))!==NULL)
$valeurs[$champ] = $v;
$action = parametre_url($action,$champ,''); // nettoyer l'url des champs qui vont etre saisis
$valeurs[$champ] = protege_valeurs($valeurs[$champ]); // proteger les ' et les " dans les champs que l'on va injecter dans les input
// seulement si c'est ce formulaire qui est poste
// ou si on le demande explicitement par le parametre _forcer_request = true
if ($je_suis_poste || (isset($valeurs['_forcer_request']) && $valeurs['_forcer_request'])) {
foreach(array_keys($valeurs) as $champ){
if (substr($champ,0,1)!=='_'){
if (($v = _request($champ))!==NULL)
$valeurs[$champ] = $v;
$action = parametre_url($action,$champ,''); // nettoyer l'url des champs qui vont etre saisis
$valeurs[$champ] = protege_valeurs($valeurs[$champ]); // proteger les ' et les " dans les champs que l'on va injecter dans les input
}
}
}
......@@ -120,4 +143,4 @@ function balise_FORMULAIRE__dyn($form)
);
}
?>
\ No newline at end of file
?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter