1

I created one module in drupal name as newmodule.I use form alter to alter user registration form for adding one field location.When i submit the form, how i can get the value of the new field which i created .

4

3 に答える 3

2

フォームの値は

$form_state['values']['field_name']

デフォルトでは。この動作に設定#treeするTRUEと、値がフラットな配列ではなくネストされた配列になります。

変数にアクセスできる 2 種類の関数が呼び出され$form_stateます。

  1. 検証関数を使用してフォーム データを検証し、ユーザーが入力したデータ (有効な電子メール アドレスなど) が受け入れられるかどうかを確認します。検証関数を追加するには、フォームの変更実装にこれを追加します。

    $form['#validate'][] = 'name_of_your_validate_handler';
    
  2. 送信機能は、有効なデータを含むフォームに作用するために使用されます。通常、データベースにデータを挿入し、ここでリダイレクトなどを設定します。送信機能を追加するには、これをフォームの変更実装に追加します。

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

検証関数と送信関数はどちらも同じ引数を取ります。

function validate_or_submit_func(&$form, &$form_state) {
  // $form is the form array created by drupal_get_form
  // $form_state contains valuable info like, the submitted values and other options.
}
于 2010-04-28T13:28:54.093 に答える
2

前の回答を詳しく説明するには、hook_form_alter 関数のどこかで、フォームに独自の #submit ハンドラーを実行するように指示します。たとえば、次のようになります。

function mymodule_form_alter(&$form, &$form_state, $form_id) {
  $form['new_field'] = array( ... ); // You already did this, right?
  $form['#submit'][] = 'mymodule_submit_handler'; // Add this
}

注: ここで #submit を追加する必要があります。置換するのではありません。次に、送信ハンドラーで、次のように値を簡単に取得できます。

function mymodule_submit_handler($form, &$form_state) {
  $value = $form_state['values']['new_field'];
}
于 2010-04-28T13:58:28.823 に答える
0

新しいモジュールでは、$form と $form_state の値をダンプして表示できるように、_submit フックを呼び出す必要もあります。

于 2010-04-28T13:35:04.547 に答える