Estou usando esse código para criar meu formulário 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);
}
Mas percebo que se eu fizer isso:
function custom_orders_admin_submit($form, &$form_state) {
exit(var_dump($form_state));
}
Não posso sair Suponho que isso ocorre porque system_settings_form()
cuida do envio. Como recupero meu controle? Preciso fazer algum processamento personalizado nesse manipulador _submit ...
'#submit'
propriedade,$form
mas isso também não ajudou.$form['#submit'] = array('custom_food_orders_admin_submit');
e agora está funcionando. Obrigado!Respostas:
O manipulador de envio padrão de
$form_id . '_submit'
apenas acionamentos se nenhum outro manipulador de envio tiver sido definido.Como system_settings_form () define um manipulador de envio, o manipulador padrão não é acionado; portanto, você deve especificar se deseja usá-lo.
Você pode fazer assim:
Adicionar seu manipulador de envio dessa maneira significa que o seu será executado antes do manipulador de envio system_settings_form ().
Se você deseja que o seu seja executado, em vez de:
Faz:
Certifique-se de não fazer isso:
porque isso substituiria o manipulador de envio system_sttings_form (), o que anularia o objetivo de usar a função system_settings_form () em primeiro lugar.
fonte