3

我正在尝试提交表单并使用 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 脚本的白屏。

4

2 回答 2

8

没有hook_form_submit()。相反,您使用$form['#submit']. 因此,如果您想myform_form_submit()在提交表单时调用,请添加:

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

myform_form(). 查看5.x 到 6.x 的表单更改Forms API 参考以获取更多信息。

于 2010-07-27T01:22:37.290 回答
0

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

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

于 2010-07-27T05:39:19.037 回答