Mam listę wyboru z opcjami:
$options = array(0 => '0', 500 => '500', 1000 => '1000');
Próbuję ustawić wartość domyślną na 500:
$form['price']['min']['#options'] = $options;
$form['price']['min']['#default_value'] = 500;
Ale to nie działa.
Mam listę wyboru z opcjami:
$options = array(0 => '0', 500 => '500', 1000 => '1000');
Próbuję ustawić wartość domyślną na 500:
$form['price']['min']['#options'] = $options;
$form['price']['min']['#default_value'] = 500;
Ale to nie działa.
Odpowiedzi:
Nigdy nie widziałem tego problemu. Ta wartość domyślna powinna działać. Powiedziałbym, że spróbuj uczynić klucz ciągiem i ustawić go #default_valuejako ciąg znaków. #optionsTablica może być przenoszonych przez array_merge gdzieś, co wymiana kluczy całkowitą kluczy. Jeśli klucze są łańcuchami, to nie powinno się zdarzyć. Obecnie twoja tablica wygląda następująco:
$options = array(
0 => '0',
500 => '500',
1000 => '1000',
);
Ale przekazanie tej tablicy array_mergemoże reorganizować te klucze liczb całkowitych w kolejności sekwencyjnej:
$options = array(
0 => '0',
1 => '500',
2 => '1000',
);
Jeśli tak się stanie, 500klucz po prostu nie istnieje. Wynika to z faktu, array_mergeże nie lubi zachowywać kluczy całkowitych, ale można użyć ciągów znaków, aby temu zapobiec. Myślę, że twoja tablica powinna wyglądać mniej więcej tak:
$options = array(
'0' => '0',
'500' => '500',
'1000' => '1000',
);
Następnie możesz ustawić #default_value:
$form['price']['min']['#default_value'] = '500';
W przeciwnym razie, czy jest gdzie indziej miejsce, w którym default_valuemożna je zastąpić?
Czy próbowałeś użyć klucza z tablicy $ options do zdefiniowania wartości domyślnej?
$form['price']['min']['#default_value'] = $options[500];
$options = array(0 => '0', 500 => '500', 1000 => '1000');
$form['price'] = array(
'#type' => 'select',
'#options' => $options,
'#default_value' => 500,
);
Aby ustawić wartość domyślną na liście wyboru, używamy parametru #default_value. Wartość atrybutu default_value listy wyboru byłaby kluczem tablicy listy wyboru.
naprawiono, powinniśmy ustawić wartość domyślną jako pierwszą z tej tablicy opcji $, jeśli dodaliśmy ostatnią, klucz tablicy zmienił się [1] => nauka, [2] => dramat, po prawej powinno być [192] => nauka, [231 ] => dramat :-)
#default_valuePowinno mieć to za argumenty w postaci jak #value.
$form['price']['min']['#default_value'] = $options['500'];
ROZWIĄZANIE: Dowiedz się, że form_select_options w ogóle nie obsługuje #default_value. Więc użyłem #value property:
$form['price']['min']['#value'] = isset($_REQUEST['price']['min']) ? $_REQUEST['price']['min'] : $my_default_value;
#valueparametru uniemożliwi użytkownikowi zmianę wartości.
$_REQUEST['price']['min']albo $my_default_value. Cokolwiek wpiszesz w wartość #, będzie wartością pola niezależnie od tego, co użytkownik wprowadzi.