Ketika saya membuat kotak pilih standar menggunakan Drupal 7 form API, nilai pertama (juga yang dipilih pada 'formulir kosong') adalah <option selected="selected" value="">- Select -</option>
. Nilai ini tidak ditentukan dalam definisi bentuk dan saya tidak mengubah bentuk. (Ini baik-baik saja)
Namun, ketika saya membuat kotak pilih kedua yang tergantung pada penggunaan pertama #states
, itu tidak memiliki nilai default seperti itu. Untuk bentuk kompleks dengan banyak dependensi, inkonsistensi ini merupakan masalah.
Contoh definisi bentuk adalah sebagai berikut:
function sb_quickquote_test_form($form, &$form_state, $post=array()) {
$fields['first_select'] = array(
'#type' => 'select',
'#title' => 'First select box',
'#options' => Array('First', 'Second', 'Third'),
'#required' => TRUE,
);
$fields['dependent_delect'] = array(
'#type' => 'select',
'#title' => 'Dependent select box',
'#options' => Array('Something', 'Another thing', 'Something else', 'Final thing'),
'#states' => Array(
'visible' => Array('select[name=first_select]' => array('value' => '2')),
'required' => Array('select[name=first_select]' => array('value' => '2')),
),
);
$fields['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
);
return $fields;
}
Dalam contoh sederhana ini, kami memiliki 2 kotak pilih dan tombol kirim. Dua kotak pilih ditampilkan sebagai:
______________ ________________
| - Select - |v| | Something |v|
`--------------' `----------------'
| - Select - | | Something | <- no empty option
| First | | Another thing |
| Second | | Something else |
| Third | | Final thing |
-------------- ----------------
(Karena #states
pengaturan, kotak pilih kedua hanya muncul ketika kotak pilih pertama memiliki "Ketiga" dipilih)
Ketidakkonsistenan ini menyebabkan masalah dalam situasi di mana kita menghasilkan bentuk dinamis yang kompleks dengan bidang yang saling bergantung.
Adakah yang tahu mengapa ladang diberi opsi yang tidak konsisten dan apa pendekatan terbaik untuk mengatasi masalah tersebut?