Setel nilai default daftar pilih [ditutup]

16

Saya telah memilih daftar dengan opsi:

$options = array(0 => '0', 500 => '500', 1000 => '1000'); 

Saya mencoba untuk menetapkan nilai default ke 500:

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

Tapi ini tidak berhasil.

selamat tinggal
sumber
1
Saya mengalami masalah yang sama. Masalahnya adalah saya tidak merender formulir menggunakan drupal_get_form (), tetapi beberapa cara lain karena use case.
user1750
Saya bertemu pertanyaan yang sama !!!! siapa yang bisa membantu saya?
bluesky_still
1
500 harus berupa '500', string bukan bilangan bulat.
saadlulu

Jawaban:

3

Kode Anda harus berfungsi, umumnya menggunakan nilai kunci sebagai nilai default, jika tidak berfungsi menjadikan string sebagai kunci dan menggunakannya sebagai nilai default.

Ashok KS
sumber
2

Saya belum pernah melihat masalah ini. Nilai default itu seharusnya berfungsi. Saya akan mengatakan mencoba membuat kunci string dan set #default_valuesebagai string. The #optionsArray mungkin sedang melewati array_merge suatu tempat, sehingga rekeying bilangan bulat kunci. Jika kunci adalah string maka itu seharusnya tidak terjadi. Saat ini, array Anda terlihat seperti ini:

$options = array(
  0 => '0',
  500 => '500',
  1000 => '1000',
);

Tetapi melewati array itu melalui array_mergebisa mengatur kembali kunci integer menjadi berurutan:

$options = array(
  0 => '0',
  1 => '500',
  2 => '1000',
);

Jika itu terjadi maka 500kuncinya tidak ada. Ini karena array_mergetidak suka menyimpan kunci integer, tetapi Anda dapat menggunakan string untuk mencegahnya. Jadi, saya pikir array Anda akan terlihat seperti ini:

$options = array(
  '0' => '0',
  '500' => '500',
  '1000' => '1000',
);

Kemudian Anda dapat mengatur #default_value:

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

Kalau tidak, apakah ada tempat lain yang default_valuemungkin ditimpa?

jordojuice
sumber
2

Apakah Anda mencoba menggunakan string bukannya bilangan bulat?

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

Mungkin juga patut dicoba menambahkan 'und'kuncinya.

sutra sutera
sumber
1

Apakah Anda mencoba menggunakan kunci dari opsi $ array untuk menentukan nilai default?
$form['price']['min']['#default_value'] = $options[500];

JurgenR
sumber
Jika itu dilakukan, secara teknis hanya akan melewati nilai $ options [500], yaitu (string) '500'.
jordojuice
1
$options = array(0 => '0', 500 => '500', 1000 => '1000'); 
$form['price'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => 500,
        );

Untuk menetapkan nilai default dalam daftar pilih, kami menggunakan parameter #default_value. Nilai atribut default_value daftar pilih akan menjadi kunci dari array daftar pilih.

Nitesh Sethia
sumber
0

Kode berikut akan menampilkan bidang dengan nilai defaultnya adalah 500.

$options = array(0 => '0', 500 => '500', 1000 => '1000'); 
$form['price'] = array(
          '#type' => 'select',
          '#options' => $options,
          '#default_value' => 500,
          '#title' => 'Price',
        );  
Aswini K
sumber
-1

Saya menghadapi masalah yang sama dan saya mencoba memberikan indeks array yang saya inginkan menjadi nilai default dan berhasil. Jawaban saya mirip dengan Ashok KS tetapi baris kedua saya tidak bisa mengerti.

AGA
sumber
-1

diperbaiki, kita harus menetapkan nilai default pertama dari array $ option, jika kita menambahkan terakhir, kunci array berubah [1] => sains, [2] => drama, yang kanan adalah [192] => sains, [231 ] => drama :-)

bluesky_still
sumber
-1

mencoba:

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

Ini bekerja baik untukku.

Tasneem
sumber
-2

The #default_valueharus memiliki argumen itu dalam bentuk sebagai #value.

$form['price']['min']['#default_value'] = $options['500'];
bluesky_still
sumber
-4

Gunakan saja

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

yang berarti nilai default akan mengambil opsi 2eme

stevey
sumber
-5

SOLUSI: Cari tahu form_select_options tidak menangani #default_valuesama sekali. Jadi saya menggunakan #value property:

$form['price']['min']['#value'] = isset($_REQUEST['price']['min']) ? $_REQUEST['price']['min'] : $my_default_value;
selamat tinggal
sumber
2
Pilihan yang dipilih memang memiliki nilai default. Juga pengaturan #valueparam akan membuat tidak mungkin bagi pengguna untuk mengubah nilai.
googletorp
1
Lihat kode, saya menetapkan #value ke default_value hanya jika tidak ada nilai dalam #value.
salam
Anda selalu menetapkan nilai ke #value, baik $_REQUEST['price']['min']atau $my_default_value. Apa pun yang Anda masukkan ke dalam #value akan menjadi nilai bidang terlepas dari apa pun yang dimasukkan pengguna.
googletorp
Jika pengguna memasukkan beberapa nilai, nilai ini dikirim melalui GET ($ _REQUEST ['price'] ['min']). Jadi jika input pengguna nilai saya atur #value ke input pengguna, jika tidak #value = $ my_default_value
breethe
Itulah masalahnya. Pengguna dapat menggunakan pilih, tetapi apa pun yang mereka pilih, hasilnya akan sama.
googletorp