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.
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é?
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.
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é.
$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.
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];
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',
);