Как создать обработчик для кнопки типа #submit с помощью Form API в Drupal 7?

Помогите разобраться.
Есть свой модуль для Drupal 7, который отображает форму:
Px3vTbj8T78.jpg
function module_x_page_form($form, &$form_state) {
  $form = array();
  $form['name'] = array(
    '#type' => 'fieldset', 
    '#title' => t('First name & Last name'), 
    '#collapsible' => TRUE, // распахивающийся
    '#collapsed' => FALSE,  // и не схопнутый по-умолчанию
  );
  $form['name']['first'] = array(
    '#type' => 'textfield', 
    '#title' => t('First Name'), 
    '#size' => 60, 
    '#maxlength' => 128, 
  );
  $form['name']['last'] = array(
    '#type' => 'textfield', 
    '#title' => t('Last Name'),
    '#size' => 60, 
    '#maxlength' => 128, 
  );
  $form['year_of_birth'] = array(
    '#type' => 'textfield',
    '#title' => t('Year of birth'),
    '#description' => t('Format is "YYYY"'),
  ); 
  $form['male'] = array(
    '#type' => 'select',
    '#title' => t('Male / Female'),
    '#options' => array(
      0 => t('Male'),
      1 => t('Female'),),
  );
  $form['passport_code'] = array(
    '#type' => 'textfield',
    '#title' => t('Passport code'),
    '#size' => 10,
    '#maxlength' => 10,
    '#description' => t('Input here your Passport Code with passport serial'),
  );
  $form['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit'),
  );
  $form['clear'] = array(
    '#type' => 'submit',
    '#value' => t('Reset form'),
    '#validate' => array('module_x_page_my_form_clear'),
  );
  $form['create_pdf'] = array(
    '#type' => 'submit',
    '#value' => t('Create PDF'),
    '#validate' => array('module_x_create_pdf'),
  );
  return $form;
}


При нажатии на кнопку 'Create PDF' выполняется валидация всех полей формы, потом в файл PDF записывается вся введенная информация.

Проблема в том, что после выполнения хука валидации module_x_create_pdf() автоматически выполняется хук form_submit() вся информация попадает в базу данных и обнуляются все введенные поля на форме.

Нужно прикрутить к кнопке $form['create_pdf'] - свой обработчик submit, который после валидации запустит свой обработчик submit, который только запишет в файл PDF введенную информацию.
  • Вопрос задан
  • 3756 просмотров
Решения вопроса 1
alekseyasherbondarenko
@alekseyasherbondarenko Автор вопроса
$form['submit_one'] = array(
  '#type' => 'submit',
  '#value' => t('Submit One'),
  '#submit' => array('my_module_form_submit_one'),  //обработчик submit для первой кнопки
);
$form['submit_two'] = array(
  '#type' => 'submit',
  '#value' => t('Submit Two'),
  '#submit' => array('my_module_form_submit_two'), //обработчик submit для второй кнопки
);

stofl.org/questions/4501890/handle-multiple-submit...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы