J'utilise ce code pour créer mon formulaire d'administration:
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);
}
Mais je remarque que si je fais cela:
function custom_orders_admin_submit($form, &$form_state) {
exit(var_dump($form_state));
}
Je ne peux pas sortir. Je suppose que c'est parce que system_settings_form()
prend soin de soumettre. Comment retrouver le contrôle? J'ai besoin de faire un traitement personnalisé dans ce gestionnaire _submit ...
'#submit'
propriété à$form
mais cela n'a pas aidé non plus.$form['#submit'] = array('custom_food_orders_admin_submit');
et maintenant ça marche. Je vous remercie!Réponses:
Le gestionnaire de soumission par défaut
$form_id . '_submit'
ne se déclenche que si aucun autre gestionnaire de soumission n'a été défini.Étant donné que system_settings_form () définit un gestionnaire de soumission, le gestionnaire par défaut ne se déclenche pas, vous devez donc le spécifier si vous souhaitez l'utiliser.
Vous pouvez le faire comme ceci:
L'ajout de votre gestionnaire de soumission comme ceci signifie que le vôtre s'exécutera avant le gestionnaire de soumission system_settings_form ().
Si vous souhaitez que le vôtre s'exécute après, au lieu de:
Faire:
Assurez-vous cependant de ne pas le faire:
car cela écraserait le gestionnaire de soumission system_sttings_form (), ce qui irait à l'encontre du but d'utiliser la fonction system_settings_form () en premier lieu.
la source