Non ho mai visto questo problema. Quel valore predefinito dovrebbe funzionare. Direi di provare a trasformare la chiave in una stringa e impostarla #default_value
come una stringa. L' #options
array può essere passato da array_merge
qualche parte, quindi digitando nuovamente le chiavi intere. Se le chiavi sono stringhe, ciò non dovrebbe accadere. Attualmente, il tuo array è simile al seguente:
$options = array(
0 => '0',
500 => '500',
1000 => '1000',
);
Ma il passaggio di tale array array_merge
può riorganizzare le chiavi di numeri interi in ordine sequenziale:
$options = array(
0 => '0',
1 => '500',
2 => '1000',
);
Se ciò accade, la 500
chiave semplicemente non esiste. Questo perché array_merge
non gli piace conservare le chiavi intere, ma è possibile utilizzare le stringhe per impedirlo. Quindi, penso che il tuo array dovrebbe assomigliare di più a questo:
$options = array(
'0' => '0',
'500' => '500',
'1000' => '1000',
);
Quindi puoi impostare il tuo #default_value
:
$form['price']['min']['#default_value'] = '500';
Altrimenti, c'è un altro posto in cui default_value
potrebbe essere sovrascritto?