hook_form_submit не вызывается - PullRequest
3 голосов
/ 27 июля 2010

Я пытаюсь отправить форму и использовать hook_form_submit.

Проблема в том, что форма отображается через ajax, в результате чего hook_form_submit не вызывается.

$items['ajaxgetform/%'] = array(  
  'page callback' => 'ajaxgetform',  
  'access arguments' => array('access content'),  
  'type' => MENU_CALLBACK  
);   

function ajaxgetform($form_id) {    
  drupal_get_form($form_id);  
  return drupal_json($panel);  
}  

function_myform_form($form_state) {  
  $form['myform'] = array(  
    '#title' => 'myform value',  
    '#type' => 'textfield',  
    '#default_value' => 'myform default value'  
  );  

  $form['#action'] = url('myurl');

  $form['submit'] = array(  
    '#type' => 'submit',  
    '#value' => 'submit'  
  );

  $form['#ajaxsubmit'] = TRUE;  
    return $form;  
  }  

hook_form_alter() вызывается.

Ниже не вызывается?

function myform_form_submit($form, $form_state) {   
  // ...  
} 

Я не уверен, является ли это распространенной проблемой, но я застрял в течение нескольких часов, пытаясь заставить его работать.

Если я удаляю $form['#action'] = url('myurl'); myform_form_submit()вызывается.Однако я получаю белый экран со сценарием Джейсона.

Ответы [ 2 ]

8 голосов
/ 27 июля 2010

Нет hook_form_submit(). Вместо этого вы регистрируете обработчики отправки с $form['#submit']. Итак, если вы хотите позвонить myform_form_submit() при отправке формы, добавьте:

$form['#submit'][] = 'myform_form_submit';

до myform_form(). Посмотрите изменения формы 5.x в 6.x и ссылку API форм для получения дополнительной информации.

0 голосов
/ 27 июля 2010

Ваша форма отображается на странице в myurl?Чтобы обработать отправку формы, форма должна отображаться (используя drupal_get_form()) на странице, используемой в качестве действия.

Вы также можете попробовать просмотреть форму #redirect на URL целевой страницы вместо ее #action.Таким образом, форма отправляется на ее генерирующий URL, но пользователь после обработки перенаправляется на целевую страницу.

...