Saya menggunakan elemen kotak centang dalam formulir di modul yang saya mulai kembangkan untuk Drupal 7. Ini adalah upaya pertama saya pada pengembangan modul dan menggunakan API Formulir. Saya membuat daftar kotak centang yang mencantumkan semua jenis konten situs tertentu. Array dari semua jenis konten dapat diperoleh dengan menggunakan berikut: $nodeTypesRaw=node_type_get_names();
. Array dengan nama mesin dari tipe konten sebagai kunci dan nama yang dapat dibaca manusia saat nilainya diperoleh.
Secara default, saya ingin semua kotak centang dipilih dan ketika formulir dikirimkan. Bagaimana saya mencapainya? Halaman Form API di situs drupal tidak terlalu membantu dalam hal pengaturan nilai default untuk kotak centang.
$nodeTypesRaw=node_type_get_names();
$nodeMachineNames=array_keys($nodeTypesRaw);
$form['process_comments']['custommod_published_comments_select_node_types']['custommod_published_comments_node_types_checkboxes']=array(
'#deafult_value'=>$nodeMachineNames,
'#options'=>$nodeTypesRaw,
'#type'=>'checkboxes',
);
Saya awalnya mulai dengan kode di atas, tetapi tidak akan berhasil. Itu memang menampilkan daftar kotak centang, tetapi mereka tidak dicentang secara default. Variabel tidak mendapatkan pengiriman formulir (diperiksa melalui drush dan var_dump).
#default_value
, tidak#deafult_value
. FA bukan AF.Jawaban:
Dari Drupal.org :
Nilai default ditetapkan sebagai array yang mewakili kunci opsi yang dipilih.
Melihat kode dalam pertanyaan Anda, masalahnya ada pada ejaan. Anda mengatur
'#deafult_value'
kapan Anda ingin mengatur'#default_value'
.sumber
$nodeTypesRaw=node_type_get_names();
. Array dengan nama mesin dari tipe konten sebagai kunci dan nama yang dapat dibaca manusia saat nilainya diperoleh. Ketika saya mengatur '# default_value` menggunakan variabel$nodeMachineNames=array_keys($nodeTypesRaw);
, kotak centang tetap tidak dicentang.Anda perlu memberikan larik kunci opsi (bukan nilai) sebagai nilai default, mis
sumber
#default_value
seperti yang disarankan @ Mołotform_process_checkbox
dan diform_process_checkboxes
Drupal 7 dan tidak ada mekanisme yang memungkinkan ini bekerja, dan tentu saja itu tidak bekerja untuk saya. github.com/drupal/drupal/blob/7.x/includes/form.inc#L3270-L3351user_account_form
misalnya, metode yang sama digunakan untuk peran