Page 1 of 1

[AMELIORATION] FormBuilder + PullDown Menu + option_value

Posted: Tue Mar 31, 2009 11:50 am
by Feel
Bonjour à tous,
Toujours en bagarre avec mes PullDown menus  ;D 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 :

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';
}
par  :

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';
}
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