Eu nunca vi esse problema. Esse valor padrão deve funcionar. Eu diria que tente fazer da chave uma string e definir #default_value
como uma string. A #options
matriz pode estar sendo passada por array_merge
algum lugar, reaplicando chaves inteiras. Se chaves são strings, isso não deve acontecer. Atualmente, sua matriz fica assim:
$options = array(
0 => '0',
500 => '500',
1000 => '1000',
);
Mas passar essa matriz array_merge
pode reorganizar essas chaves inteiras para estar em ordem seqüencial:
$options = array(
0 => '0',
1 => '500',
2 => '1000',
);
Se isso acontecer, a 500
chave simplesmente não existe. Isso ocorre porque array_merge
não gosta de preservar chaves inteiras, mas você pode usar cadeias de caracteres para evitá-lo. Então, acho que sua matriz deve se parecer mais com isso:
$options = array(
'0' => '0',
'500' => '500',
'1000' => '1000',
);
Então você pode definir o seu #default_value
:
$form['price']['min']['#default_value'] = '500';
Caso contrário, existe algum outro lugar em que o default_value
item possa estar sendo substituído?