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:
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:
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.
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.
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ć.
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 :-)
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.
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_value
jako ciąg znaków.#options
Tablica może być przenoszonych przezarray_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:Ale przekazanie tej tablicy
array_merge
może reorganizować te klucze liczb całkowitych w kolejności sekwencyjnej:Jeśli tak się stanie,
500
klucz 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:Następnie możesz ustawić
#default_value
:W przeciwnym razie, czy jest gdzie indziej miejsce, w którym
default_value
można je zastąpić?źródło
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.
źródło
Czy próbowałeś użyć ciągu zamiast liczby całkowitej?
Być może warto spróbować dodać
'und'
klucz.źródło
Czy próbowałeś użyć klucza z tablicy $ options do zdefiniowania wartości domyślnej?
$form['price']['min']['#default_value'] = $options[500];
źródło
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.
źródło
Poniższy kod pokaże pole z domyślną wartością 500.
źródło
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ć.
źródło
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 :-)
źródło
próbować:
$ form ['price'] ['# default_value'] = 500;
To działa dobrze dla mnie.
źródło
#default_value
Powinno mieć to za argumenty w postaci jak#value
.źródło
Po prostu użyj
co oznacza, że domyślną wartością będzie opcja 2eme
źródło
ROZWIĄZANIE: Dowiedz się, że form_select_options w ogóle nie obsługuje
#default_value
. Więc użyłem#value property
:źródło
#value
parametru 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.