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.


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.


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?


2

Apakah Anda mencoba menggunakan string bukannya bilangan bulat?

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

Mungkin juga patut dicoba menambahkan 'und'kuncinya.


1

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


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.


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',
        );  

-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.


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


-1

mencoba:

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

Ini bekerja baik untukku.


-2

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

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

-4

Gunakan saja

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

yang berarti nilai default akan mengambil opsi 2eme


-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;

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.