Używam tego kodu, aby utworzyć formularz administratora:
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);
}
Ale zauważam, że jeśli to zrobię:
function custom_orders_admin_submit($form, &$form_state) {
exit(var_dump($form_state));
}
Nie mogę wyjść. Zgaduję, że system_settings_form()
dzieje się tak, ponieważ dba o przesłanie. Jak odzyskać kontrolę? Muszę wykonać niestandardowe przetwarzanie w tym module obsługi _submit ...
'#submit'
właściwość,$form
ale to też nie pomogło.$form['#submit'] = array('custom_food_orders_admin_submit');
i teraz działa. Dziękuję Ci!Odpowiedzi:
Domyślny moduł obsługi przesyłania
$form_id . '_submit'
tylko odpala, jeśli nie ustawiono innych modułów obsługi przesyłania.Ponieważ system_settings_form () ustawia moduł obsługi przesyłania, domyślny moduł obsługi nie jest uruchamiany, dlatego należy go określić, aby go użyć.
Możesz to zrobić w następujący sposób:
Dodanie procedury obsługi przesyłania w ten sposób oznacza, że będzie ona działać przed procedurą obsługi przesyłania system_settings_form ().
Jeśli chcesz, aby Twój działał później, zamiast:
Robić:
Pamiętaj jednak, aby tego nie robić:
ponieważ to nadpisze procedurę obsługi system_sttings_form (), co zniweczy cel wykorzystania funkcji system_settings_form ().
źródło