hook_form_submit没有被调用

时间:2010-07-26 21:21:49

标签: drupal drupal-6 drupal-fapi

我正在尝试提交表单并使用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()被调用。但是我得到了一个带有jason脚本的白色屏幕。

2 个答案:

答案 0 :(得分:8)

没有hook_form_submit()。而是使用$form['#submit']注册提交处理程序。因此,如果您想在提交表单时致电myform_form_submit(),请添加:

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

myform_form()。有关详细信息,请查看5.x to 6.x form changesForms API reference

答案 1 :(得分:0)

您的表单是否显示在myurl页面上?为了处理表单提交,将在用作操作的页面上显示(使用drupal_get_form())表单。

您也可以尝试将表单#redirect设置为着陆页网址而不是其#action。这样,表单将提交到其生成URL,但用户在处理后会重定向到目标页面。