Ini contoh yang baru saja saya temui. Saya mencoba memasukkan beberapa HTML ke label bidang saya.
$form['field_feedback']['und']['#title'] <- has the title
$form['field_feedback']['und'][0]['#title'] <- has the title
$form['field_feedback']['und'][0]['value']['#title'] <- has the title. (Works)
Mengapa ada tiga atribut #title yang terisi dengan hanya satu yang digunakan?
Jawaban:
Apa yang Anda lihat adalah bagaimana Drupal merepresentasikan bidang dalam formulir. Itu rusak seperti ini:
$form['field_back']['und']
('und'
untuk'undefined'
), adalah berbagai bahasa yang telah diterjemahkan oleh bidang ini. Dalam Drupal, Anda dianjurkan untuk digunakanLANGUAGE_NONE
untuk'und'
dalam kode.$form['field_feedback']['und'][0]
, mewakili entri yang berbeda untuk bidang tersebut. Sebagai contoh, jika lapangan memiliki kardinalitas terbatas, dan ada beberapa entri untuk bidang itu, mereka akan menunjukkan sebagai$form['field_feedback']['und'][0]
,$form['field_feedback']['und'][1]
, dll$form['field_feedback']['und'][0]['value']
. Dalam hal ini nama kolomnya adalahvalue
, untuk tipe bidang referensi simpulnid
, dan seterusnya. Jika suatu bidang memiliki beberapa kolom data yang terkait dengannya, Anda juga akan melihat lebih banyak anak. Ini diwakili oleh bidang teks / kotak pilih / widget khusus, dan pada akhirnya akan memberikan nilai untuk bidang tersebut.Fakta bahwa judul telah ditambahkan ke berbagai elemen di seluruh hierarki adalah insidental jujur. Apakah atau tidak judul-judul tersebut ditampilkan pada formulir adalah ke pengaturan tertentu dari array render di mana masing
#title
- masing berisi.Untuk mengubah judul pada widget form aktual, Anda hanya perlu khawatir tentang elemen form di bagian paling bawah array: yaitu elemen input aktual (
$form['field_feedback']['und'][0]['value']
, dll.).Mungkin perlu dicatat bahwa elemen / widget yang digunakan untuk bidang tertentu mungkin cukup kompleks. Jika Anda belum memilikinya, Anda harus menginstal modul Devel dan menggunakan
dpm()
fungsi untuk memeriksa$form
array; yang akan menunjukkan dengan tepat di mana dalam array elemen yang Anda coba targetkan.sumber