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#action の代わりにランディング ページ URL にフォームを設定することもできます。このように、フォームは生成元の URL に送信されますが、ユーザーは処理後に目的のページにリダイレクトされます。

于 2010-07-27T05:39:19.037 に答える