Saya menggunakan kode ini untuk membuat formulir admin saya:
function custom_orders_admin(){
$form = array();
$form['custom_ignore_terms']['ignore_terms'] = array(
'#type' => 'checkboxes',
'#title' => t('Don\'t display these'),
'#default_value' => variable_get('custom_ignore_terms', array()),
'#options' => drupal_map_assoc($termTypes),
'#description' => t("Choose the terms you do not want displayed."),
'#required' => FALSE,
);
return system_settings_form($form);
}
Tetapi saya perhatikan bahwa jika saya melakukan ini:
function custom_orders_admin_submit($form, &$form_state) {
exit(var_dump($form_state));
}
Saya tidak bisa keluar. Saya menduga ini karena system_settings_form()
mengurus pengiriman. Bagaimana saya mendapatkan kendali saya kembali? Saya perlu melakukan beberapa pemrosesan kustom di dalam handler _submit ...
'#submit'
properti$form
tetapi itu tidak membantu.$form['#submit'] = array('custom_food_orders_admin_submit');
dan sekarang bekerja. Terima kasih!Jawaban:
Penangan kiriman default dari
$form_id . '_submit'
kebakaran hanya jika tidak ada penangan kiriman lainnya telah ditetapkan.Karena system_settings_form () menetapkan submisi penangan, handler default tidak menyala, jadi Anda harus menentukannya jika Anda ingin menggunakannya.
Anda dapat melakukannya seperti ini:
Menambahkan handler kirim Anda seperti ini berarti milik Anda akan berjalan sebelum system_settings_form () kirim handler.
Jika Anda ingin milik Anda dijalankan, alih-alih:
Melakukan:
Pastikan untuk tidak melakukan ini:
karena itu akan menimpa system_sttings_form () mengirimkan handler, yang akan mengalahkan tujuan menggunakan fungsi system_settings_form () di tempat pertama.
sumber