Estoy usando este código para hacer mi formulario de administrador:
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);
}
Pero noto que si hago esto:
function custom_orders_admin_submit($form, &$form_state) {
exit(var_dump($form_state));
}
No puedo salir Supongo que esto se debe a que system_settings_form()
se encarga de enviar. ¿Cómo recupero mi control? Necesito hacer un procesamiento personalizado en ese controlador _submit ...
'#submit'
propiedad$form
pero eso tampoco ayudó.$form['#submit'] = array('custom_food_orders_admin_submit');
y ahora está funcionando. ¡Gracias!Respuestas:
El controlador de envío predeterminado
$form_id . '_submit'
solo se activa si no se ha configurado ningún otro controlador de envío.Debido a que system_settings_form () establece un controlador de envío, el controlador predeterminado no se activa, por lo que debe especificarlo si desea usarlo.
Puedes hacerlo así:
Agregar su controlador de envío de esta manera significa que el suyo se ejecutará antes que el controlador de envío system_settings_form ().
Si quieres que el tuyo se ejecute después, en lugar de:
Hacer:
Sin embargo, asegúrese de no hacer esto:
porque eso sobreescribiría el controlador de envío system_sttings_form (), lo que anularía el propósito de usar la función system_settings_form () en primer lugar.
fuente