Judul pada dasarnya mengatakan itu semua, saya ingin menonaktifkan satu kotak centang dari elemen kotak centang jenis FAPI.
Saya tidak ingin melakukannya jika dengan JavaScript, juga tidak mengubahnya dari kotak centang ke beberapa elemen kotak centang sebagai pilihan karena elemen disediakan oleh modul lain.
Pikiran?
Jawaban:
Cara bersih memang ada di Drupal 7! Rupanya, per posting ini , belum didokumentasikan.
Contoh lain .
Anda juga dapat mengatur fungsi #access ke FALSE, untuk menyembunyikan kotak centang.
sumber
Sayangnya tidak ada cara yang benar-benar bersih untuk melakukannya di FAPI. Taruhan terbaik Anda - jika Anda bertekad - adalah untuk mengubah fungsi proses #process tambahan ke elemen kotak centang.
Fungsi default yang ditambahkan ke elemen tipe 'checkbox' sebenarnya adalah fungsi ( expand_checkboxes () ) membagi elemen tunggal menjadi beberapa elemen dari tipe 'checkbox' yang kemudian digabungkan kembali menjadi satu. Jika Anda ingin mendukung fungsi proses kedua Anda, itu bisa menjangkau ke dalam grup elemen 'kotak centang' yang diperluas dan menonaktifkan elemen yang dimaksud.
Kode berikut ini sama sekali tidak diuji, jadi emptor peringatan:
sumber
preg_replace()
lebih dari output.Ini kode saya untuk Drupal 7, untuk mengubah elemen Peran di halaman Edit Pengguna.
sumber
Saya menggunakan kotak centang sebagai "menetapkan" dan "membatalkan penetapan". Klien telah meminta agar saya menonaktifkan "membatalkan tugas", tetapi masih penting untuk mewakili "tugas." Perlu diingat bahwa kotak centang DISABLED mengirimkan sebagai "salah" dan jika tidak ditangani dengan benar akan membatalkan penetapan, saya membagi kotak centang saya menjadi "proses ini" dan "abaikan yang dinonaktifkan ini." Begini caranya:
Perhatikan bahwa 'partner_assignments' adalah array / variabelnya sendiri dan tidak akan diproses sebagai "unassign," dalam kasus penggunaan saya. Terima kasih telah memposting - itu menuntun saya ke solusi ini.
sumber
D7. Di sini kami harus memastikan bahwa ketika menambahkan sebuah node satu opsi referensi istilah taksonomi tertentu selalu tidak dapat diperiksa dan akan selalu disimpan ke node tersebut. Jadi kami masuk ke #after_build dan menonaktifkan opsi tertentu itu, tetapi harus memastikan bahwa pada akhirnya opsi tertentu akan diteruskan. Karena hanya menonaktifkan itu akan menghentikan perjalanan opsi itu ke kait masa depan.
Seperti itulah tampilan opsi yang dinonaktifkan:
sumber
Saya tidak bisa mendapatkan jawaban Eaton agar berfungsi seperti yang tertulis (proses panggilan balik #process tidak mengembalikan apa pun, dan itu dipanggil sebelum kotak centang diperluas) dan saya juga ingin agar nilai dikembalikan dari kotak centang yang dinonaktifkan (saya ingin itu diperiksa secara permanen ). Ini bekerja untuk saya (D6).
Jika ada yang tahu cara yang lebih rapi, saya ingin mendengarnya!
sumber
Fatal error: Call to undefined function expand_checkboxes()
Ini kode saya untuk Drupal 7, untuk mengubah elemen Peran di halaman Edit Pengguna.
sumber
Di Drupal 7, untuk menonaktifkan opsi di pilih di entitas yang dapat fieldable, saya menemukan bahwa saya harus menginstal
#process
fungsi. Sayangnya, ini menonaktifkan fungsi proses bawaanform_process_checkboxes
, sehingga perlu ditambahkan kembali (atau dipanggil dari fungsi proses Anda). Selain itu, ketika menonaktifkan kotak centang yang sudah diperiksa, saya menemukan bahwa callback nilaiform_type_checkboxes_value
bawaan ( ) mengabaikan default ketika mengambil hasil dari input.Maka sesuatu seperti ini:
Dan akhirnya:
Saya tidak menemukan bahwa ada jawaban lain di halaman ini yang berfungsi dalam kasus ini.
sumber
Inilah contoh saya (menggunakan
#after_build
):Ditambah fungsi callback berikut:
Diuji pada Drupal 6, tetapi harus bekerja untuk Drupal 7 juga.
Drupal 6
Anda dapat menggunakan fungsi ( sumber ) berikut:
sumber
Saya menggunakan kode berikut ini di drupal 6: -
dan fungsi panggilan balik ada di sini: -
/ ** * Memproses setiap kotak centang berdasarkan 'feture' sudah digunakan oleh Sub-domain atau tidak. * @param Array $ array elemen dari checkbox form * /
sumber
Satu hal penting yang harus diperhatikan adalah bahwa kotak centang yang dinonaktifkan tidak dapat dikirimkan, jadi Anda mungkin perlu memaksa
#value
kotak centang itu juga .. Misalnya:Dalam kasus saya, tanpa ini,
$form_state['values']
tidak mengandung nilai kotak centang saya (yang diaktifkan secara default, tetapi dinonaktifkan).sumber
Kaitkan bidang teks dan buat kotak teks dinamis dengan info dari basis data
1 ° dapatkan assoc. array dari database misalnya
2 ° Implements
hook_form_alter()
/ ** * Menerapkan hook_form_alter (). * form id = views-exposed-form * /
Beberapa bidang 3 ° akan dapat diperiksa!
sumber
Jika Anda sedang membangun form Anda sendiri, alih-alih menjalankan fungsi form_alter / # proses / # pre_render yang terpisah, Anda bisa beralih dari 'kotak centang' ke menghasilkan elemen 'kotak centang' individual.
'#tree' => TRUE
memberi Anda struktur pohon yang sama dengan versi kotak centang ketika array $ form_state ['values'] tiba di validasi / kirim / bangun kembali. Jika Anda tidak bisa atau tidak ingin menggunakan #tree karena alasan tertentu, berikan setiap kotak centang'#parents' => array('my_element', $key)
properti untuk secara eksplisit mengatur posisinya dalam struktur nilai.sumber