Bagaimana cara menonaktifkan opsi di bidang formulir pilih?
$form['feed'] = array(
'#type' => 'select',
'#title' => t('Display of XML feed items'),
'#options' => array(
'title' => t('Titles only'),
'teaser' => t('Titles plus teaser'),
'fulltext' => t('Full text'),
),
'#description' => t('Global setting for the length of XML feed items that are output by default.'),
);
Bagaimana saya bisa menonaktifkan, misalnya, opsi "Judul saja"?
Jawaban:
Satu-satunya cara untuk menonaktifkan salah satu opsi untuk bidang formulir "pilih" adalah dengan mengesampingkan fungsi theme_select () yang mengimplementasikan hook_theme_registry_alter () .
theme_select()
mengeksekusi kode berikut:Fungsi yang Anda implementasikan harus menjalankan fungsi Anda sendiri, bukan form_select_options () .
Seperti
theme_select()
yang dipanggil untuk setiap bidang pilih yang digunakan dalam bentuk Drupal apa pun, saya lebih suka mempertimbangkan untuk mengimplementasikan hook_form_alter () untuk menghapus opsi dari bidang formulir yang Anda inginkan.sumber
Menonaktifkan opsi mungkin sulit dilakukan ( Menggunakan form_alter untuk menonaktifkan SATU opsi bidang pilihan ) jadi saya akan merekomendasikan Anda untuk melihat optgroup sebagai alternatif. Dokumentasi bentuk API Drupal tidak menjelaskannya tetapi API memungkinkan array bersarang untuk opsi, lihat form_select_options () dan
<optgroup>
bagian.Anda dapat menulis kode ini:
Lihatlah formulir Drupal 6 dan array optgroup .
Sunting : untuk memperjelas ini adalah alternatif dan bukan jawaban langsung.
sumber
Saya tidak tahu dan belum dapat menemukan cara untuk menonaktifkan opsi individual. Sepertinya mereka mencoba memasukkan sesuatu seperti ini ke Drupal. Mungkin beberapa alternatif, bisakah yang Anda inginkan dilakukan dengan css ?:
Atau, jika Anda tidak ingin nilai ditampilkan sama sekali, Anda dapat menghapusnya
sumber
Saya punya saya bekerja dengan baris berikut
di mana 1 adalah indeks dari item yang Anda tidak ingin ditampilkan.
sumber
Konversi satu item yang Anda ingin nonaktifkan menjadi kosong
<optgroup>
.Pro:
hook_form_alter
atau langsung ketika membangun formulir kustom Anda, tidak perlu menerapkantheme_select
fungsi dalam tema Anda.Cons:
value='title'
atribut yang berhubungan dengan aslinya<option>
di DOM yang dihasilkan.Penerapan:
Optgroups di Drupal dilambangkan di dalam
#options
array sebagaikey => value
pasangan mana pun yang nilainya adalah array.Jadi dari contoh di OP kita akan memindahkan nilai
t('Titles only')
menjadikey
dan kemudian membuat nilai menjadi array kosong.HTML yang dihasilkan akan terlihat seperti ini:
sumber
Untuk menonaktifkan seluruh bidang, gunakan
Untuk menonaktifkan opsi di bidang pilih, gunakan
dimana:
['field_name'] adalah nama bidang Anda
[1] adalah indeks opsi dalam daftar
sumber