$ form_state ['values']と$ form_state ['input']の違い


24

誰かがこれら2つの変数の違いを教えてもらえますか?

$form_state['values']
$form_state['input']

オプションで、それらが使用されるアクションのいくつかの例。私は特に、Drupal形式でajaxを使用することについて疑問に思っています。これらのどれをフォームから入力値を取得するためにajaxコールバックで使用する必要がありますか?

回答:


27

ここでの決定的な違いは、ほとんどの場合、$ form_state ['values'];を使用する必要があることです。$ form_state ['input']配列のデータは生で検証されていないためです。

$ form_state ['input']は、マルチステップフォームに便利です。生の入力を安全に処理する方法に精通していることを前提としています。詳細については、form_builderを参照してください...


1

何をしているのかわからない限り、$form_state['values']それは処理されたフォームの値です。$form_state['input']生データです。form_builderのコードを参照してください:https://api.drupal.org/api ....


0

症例の99.9%に、$form_state['values']そして$form_state['input']同一です。

ただし、1%の一部に注意してください。特にdate_popupフィールドを使用する場合は、入力が「値」配列ではなく「入力」に格納されるため、注意してください。


0

$form_state['values']ほとんどの場合$form_state['input']、未加工の無効な値を保持するために使用する必要があります。また、$form_state['values']フォームの送信が失敗するとデフォルト値が渡されますが、$form_state['input']NULLの場合は渡されます。


-4

drupal_form_submitの機能は、次のコードを見ることができます:

// Populate $form_state['input'] with the submitted values before retrieving
// the form, to be consistent with what drupal_build_form() does for
// non-programmatic submissions (form builder functions may expect it to be
// there).
$form_state['input'] = $form_state['values'];

したがって、まったく同じです。


4
上記の関数は、プログラムでフォームを送信するために使用されます... OPの質問に答えません。
Anil Sagar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.