Unterschied zwischen $ form_state ['values'] und $ form_state ['input']

24

Kann mir bitte jemand den Unterschied zwischen diesen beiden Variablen erklären?

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

Optional ein Beispiel für eine Aktion, mit der sie verwendet werden. Ich wundere mich besonders über die Verwendung mit Ajax in Drupal-Form. Welche davon sollte ich in einem Ajax-Rückruf verwenden, um Eingabewerte aus dem Formular abzurufen?

Hajnyon
quelle

Antworten:

27

Der entscheidende Unterschied besteht darin, dass in den meisten Fällen $ form_state ['values'] verwendet werden sollte. da die Daten im Array $ form_state ['input'] unformatiert und nicht validiert sind.

$ form_state ['input'] ist nützlich für mehrstufige Formulare, vorausgesetzt, Sie sind mit dem sicheren Umgang mit unformatierten Eingaben vertraut. Weitere Informationen finden Sie unter form_builder.

Anil Sagar
quelle
1

Wenn Sie nicht wissen, was Sie tun, sind $form_state['values']es die verarbeiteten Formularwerte. $form_state['input']ist die Rohdaten. Lesen Sie den Code für form_builder : https://api.drupal.org/api ....

Adi
quelle
0

In 99,9% der Fälle $form_state['values']und $form_state['input']sind identisch.

Achten Sie jedoch auf einen Teil der 1%, insbesondere bei Verwendung des Felds date_popup , da seine Eingabe in 'input' gespeichert wird, jedoch NICHT im Array 'values'.

derrekc
quelle
0

$form_state['values']sollte in den meisten Fällen verwendet werden, $form_state['input']um den rohen und ungültigen Wert zu halten. Auch in $form_state['values']Standard werden Werte übergeben, wenn die Übermittlung des Formulars fehlschlägt, aber im Falle von $form_state['input']NULL übergeben wird.

Anil kumar
quelle
-4

In der Funktion drupal_form_submit sehen Sie den folgenden Code:

// 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'];

So ist es genau das gleiche.

Lovau
quelle
4
Die obige Funktion wird zum programmgesteuerten Senden von Formularen verwendet. Sie beantwortet die OP-Frage nicht.
Anil Sagar