[AMELIORATION] FormBuilder + PullDown Menu + option_value
Posted: Tue Mar 31, 2009 11:50 am
Bonjour à tous,
Toujours en bagarre avec mes PullDown menus
après avoir trouvé un moyen de les précharger il m'a fallu trouver un moyen de forcer les valeurs des options.
La classe PullDownField de FormBuilder séquence de manière arbitraire (1, 2, 3, ...) les valeurs des options. C'est bien, mais insuffisant pour mes besoins.
J'ai donc trouvé sur les fora anglophones cette petite astuce pour charger les bonnes "valeur soumise" du formulaire.
Il faut modifier dans le programme PullDownField.class.php (modules\FormBuilder\classes\) la fonction GetFieldInput.
Code original :
par :
Cette façon de faire insérera dans la value de la balise option la valeur que vous aurez renseignée en créant votre formulaire.
@++
Philippe
Toujours en bagarre avec mes PullDown menus

La classe PullDownField de FormBuilder séquence de manière arbitraire (1, 2, 3, ...) les valeurs des options. C'est bien, mais insuffisant pour mes besoins.
J'ai donc trouvé sur les fora anglophones cette petite astuce pour charger les bonnes "valeur soumise" du formulaire.
Il faut modifier dans le programme PullDownField.class.php (modules\FormBuilder\classes\) la fonction GetFieldInput.
Code original :
Code: Select all
$subjects = &$this->GetOptionRef('option_name');
if (count($subjects) > 1) {
for($i=0;$i<count($subjects);$i++) {
$sorted[$subjects[$i]]=($i+1);
}
if( $this->GetOption('sort') == '1' ) {
ksort($sorted);
}
} else {
$sorted[$subjects] = '1';
}
Code: Select all
$subjects = &$this->GetOptionRef('option_name');
$subjects_val = &$this->GetOptionRef('option_value'); // Récupération des valeurs d'option
if (count($subjects) > 1 && is_array($subjects)) { // plusieurs options différentes, on traite le tableau
for($i=0;$i<count($subjects);$i++) {
if (isset($subjects_val[$i] && !empty($subjects_val[$i])) { // une valeur est attachée à l'option, on la récupère
$sorted{$subjects[$i]] = ($subjects_val[$i]); // création du couple option_value / option_name
} else {
$sorted[$subjects[$i]]=($subjects_val[$i]); // pas de valeur d'option, on affecte l'indice 'i' tout simplement
}
}
if( $this->GetOption('sort') == '1' ) {
ksort($sorted);
}
} else { // cas où une seule entrée prévue dans le DropDown.
$sorted[$subjects] = !empty($subjects_val)?$subjects_val:'1';
}
@++
Philippe