Tôi chưa bao giờ thấy vấn đề này. Giá trị mặc định đó sẽ hoạt động. Tôi muốn nói hãy thử làm cho khóa thành một chuỗi và đặt #default_valuethành một chuỗi. Các #optionsmảng chưa được đi qua array_merge nơi nào đó, do đó rekeying nguyên phím. Nếu khóa là chuỗi thì điều đó không nên xảy ra. Hiện tại, mảng của bạn trông như thế này:
$options = array(
0 => '0',
500 => '500',
1000 => '1000',
);
Nhưng việc truyền mảng đó qua array_mergecó thể sắp xếp lại các khóa nguyên đó theo thứ tự tuần tự:
$options = array(
0 => '0',
1 => '500',
2 => '1000',
);
Nếu điều đó xảy ra thì 500chìa khóa đơn giản là không tồn tại. Điều này là do array_mergekhông thích bảo tồn các khóa nguyên, nhưng bạn có thể sử dụng các chuỗi để ngăn chặn nó. Vì vậy, tôi nghĩ rằng mảng của bạn sẽ trông giống như thế này:
$options = array(
'0' => '0',
'500' => '500',
'1000' => '1000',
);
Sau đó, bạn có thể thiết lập #default_value:
$form['price']['min']['#default_value'] = '500';
Nếu không, có nơi nào khác default_valuecó thể bị ghi đè không?