Ustaw wartość domyślną listy wyboru [zamknięte]

16

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.

breethe
źródło
1
Natrafiłem na ten sam problem. Problem polegał na tym, że nie renderowałem formularza za pomocą drupal_get_form (), ale w inny sposób ze względu na przypadek użycia.
user1750,
Spotkałem to samo pytanie !!!! kto może mi pomóc?
bluesky_still,
1
500 powinno być „500”, ciąg znaków nie liczbą całkowitą.
saadlulu,

Odpowiedzi:

3

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ć?

jordojuice
źródło
3

Twój kod powinien działać, na ogół użyj wartości klucza jako wartości domyślnej, jeśli nie działa, ustaw ciąg znaków jako klucze i użyj go jako wartości domyślnej.

Ashok KS
źródło
2

Czy próbowałeś użyć ciągu zamiast liczby całkowitej?

$form['price']['min']['#default_value'] = "500"

Być może warto spróbować dodać 'und'klucz.

silkAdmin
źródło
1

Czy próbowałeś użyć klucza z tablicy $ options do zdefiniowania wartości domyślnej?
$form['price']['min']['#default_value'] = $options[500];

JurgenR
źródło
Jeśli tak się stanie, technicznie po prostu przekaże wartość $ options [500], czyli (ciąg) „500”.
jordojuice
1
$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.

Nitesh Sethia
źródło
0

Poniższy kod pokaże pole z domyślną wartością 500.

$options = array(0 => '0', 500 => '500', 1000 => '1000'); 
$form['price'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => 500,
          '#title' => 'Price',
        );  
Aswini K.
źródło
-1

Napotkałem ten sam problem i próbowałem podać indeks tablicy, która ma być wartością domyślną i zadziałało. Moja odpowiedź jest podobna do Ashoka KS, ale jego drugiej linii nie mogłem zrozumieć.

Aga
źródło
-1

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 :-)

bluesky_still
źródło
-1

próbować:

$ form ['price'] ['# default_value'] = 500;

To działa dobrze dla mnie.

Tasneem
źródło
-2

#default_valuePowinno mieć to za argumenty w postaci jak #value.

$form['price']['min']['#default_value'] = $options['500'];
bluesky_still
źródło
-4

Po prostu użyj

$form['price']['min']['#default_value'] = 2 

co oznacza, że ​​domyślną wartością będzie opcja 2eme

Stevey
źródło
-5

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;
breethe
źródło
2
Wybierz opcje mają wartość domyślną. Również ustawienie #valueparametru uniemożliwi użytkownikowi zmianę wartości.
googletorp
1
Spójrz na kod, ustawiam #value na default_value tylko jeśli nie ma żadnej wartości w #value.
upływa
Zawsze ustawić wartość #VALUE, albo $_REQUEST['price']['min']albo $my_default_value. Cokolwiek wpiszesz w wartość #, będzie wartością pola niezależnie od tego, co użytkownik wprowadzi.
googletorp
Jeśli użytkownik wprowadzi jakąś wartość, wartość ta jest wysyłana przez GET ($ _REQUEST ['cena'] ['min']). Jeśli więc użytkownik wprowadzi wartość, ustawię # wartość na wartość wprowadzoną przez użytkownika, w przeciwnym razie # wartość = $
moja_default_value
To jest problem. Użytkownicy mogą korzystać z zaznaczenia, ale nie ma znaczenia, co wybiorą, wynik będzie taki sam.
googletorp