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 .
3 に答える
フォームの値は
$form_state['values']['field_name']
デフォルトでは。この動作に設定#tree
するTRUE
と、値がフラットな配列ではなくネストされた配列になります。
変数にアクセスできる 2 種類の関数が呼び出され$form_state
ます。
検証関数を使用してフォーム データを検証し、ユーザーが入力したデータ (有効な電子メール アドレスなど) が受け入れられるかどうかを確認します。検証関数を追加するには、フォームの変更実装にこれを追加します。
$form['#validate'][] = 'name_of_your_validate_handler';
送信機能は、有効なデータを含むフォームに作用するために使用されます。通常、データベースにデータを挿入し、ここでリダイレクトなどを設定します。送信機能を追加するには、これをフォームの変更実装に追加します。
$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.
}
前の回答を詳しく説明するには、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'];
}
新しいモジュールでは、$form と $form_state の値をダンプして表示できるように、_submit フックを呼び出す必要もあります。