web-dev-qa-db-fra.com

Définir la valeur par défaut de la liste de sélection

J'ai une liste de sélection avec des options:

$options = array(0 => '0', 500 => '500', 1000 => '1000'); 

J'essaie de définir sa valeur par défaut à 500:

$form['price']['min']['#options'] = $options; 
$form['price']['min']['#default_value'] = 500;

Mais ça ne marche pas.

16
breethe

Je n'ai jamais vu ce problème. Cette valeur par défaut devrait fonctionner. Je dirais essayez de faire de la clé une chaîne et définissez #default_value sous forme de chaîne. Le #options le tableau peut être passé par array_merge quelque part, recomposant ainsi les clés entières. Si les clés sont des chaînes, cela ne devrait pas se produire. Actuellement, votre tableau ressemble à ceci:

$options = array(
  0 => '0',
  500 => '500',
  1000 => '1000',
);

Mais en passant ce tableau à travers array_merge peut réorganiser ces clés entières pour qu'elles soient dans un ordre séquentiel:

$options = array(
  0 => '0',
  1 => '500',
  2 => '1000',
);

Si cela se produit, le 500 la clé n'existe tout simplement pas. Ceci est dû au fait array_merge n'aime pas conserver les clés entières, mais vous pouvez utiliser des chaînes pour l'empêcher. Donc, je pense que votre tableau devrait ressembler davantage à ceci:

$options = array(
  '0' => '0',
  '500' => '500',
  '1000' => '1000',
);

Ensuite, vous pouvez définir votre #default_value:

$form['price']['min']['#default_value'] = '500';

Sinon, existe-t-il ailleurs où le default_value peut-être ignoré?

3
jordojuice

Votre code doit fonctionner, utilisez généralement la valeur de clé comme valeur par défaut, s'il ne fonctionne pas, créez la chaîne comme clés et utilisez-la comme valeur par défaut.

3
Ashok KS

Avez-vous essayé d'utiliser une chaîne au lieu d'un entier?

$form['price']['min']['#default_value'] = "500"

Cela vaut peut-être aussi la peine d'essayer d'ajouter le 'und' clé.

2
silkAdmin
$options = array(0 => '0', 500 => '500', 1000 => '1000'); 
$form['price'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => 500,
        );

Afin de définir la valeur par défaut dans la liste de sélection, nous utilisons le paramètre #default_value. La valeur de l'attribut default_value de la liste de sélection serait la clé du tableau de liste de sélection.

1
Nitesh Sethia

Avez-vous essayé d'utiliser la clé des options $ du tableau pour définir la valeur par défaut?
$form['price']['min']['#default_value'] = $options[500];

1
JurgenR

Le code suivant affichera le champ avec sa valeur par défaut 500.

$options = array(0 => '0', 500 => '500', 1000 => '1000'); 
$form['price'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => 500,
          '#title' => 'Price',
        );  
0
Aswini K