Я использую этот код, чтобы сделать мою форму администратора:
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);
}
Но я замечаю, что если я сделаю это:
function custom_orders_admin_submit($form, &$form_state) {
exit(var_dump($form_state));
}
Я не могу выйти. Я предполагаю, что это потому, что system_settings_form()
заботится о представлении. Как мне вернуть контроль? Мне нужно сделать некоторые пользовательские обработки в этом обработчике _submit ...
'#submit'
свойство,$form
но это тоже не помогло.$form['#submit'] = array('custom_food_orders_admin_submit');
и теперь это работает. Спасибо!Ответы:
Обработчик отправки по умолчанию
$form_id . '_submit'
срабатывает только в том случае, если не были установлены другие обработчики отправки.Поскольку system_settings_form () устанавливает обработчик отправки, обработчик по умолчанию не запускается, поэтому вы должны указать его, если хотите его использовать.
Вы можете сделать это так:
Добавление вашего обработчика отправки таким образом означает, что ваш будет работать до того, как system_settings_form () отправит обработчик отправки.
Если вы хотите, чтобы ваш запускался после:
Делать:
Удостоверьтесь, чтобы не делать этого, хотя:
потому что это перезапишет обработчик отправки system_sttings_form (), что в первую очередь откажется от цели использования функции system_settings_form ().
источник