Różnica między $ form_state ['wartości'] a $ form_state ['input']

24

Czy ktoś może mi powiedzieć różnicę między tymi dwiema zmiennymi?

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

Opcjonalnie jakiś przykład akcji, z którą są używane. Zastanawiam się szczególnie nad używaniem z ajaxem w formie drupal. Które z nich należy użyć w wywołaniu zwrotnym ajax, aby uzyskać wartości wejściowe z formularza?

Hajnyon
źródło

Odpowiedzi:

27

Zasadnicza różnica polega na tym, że w większości przypadków powinieneś używać $ form_state ['wartości']; ponieważ dane w tablicy $ form_state ['input'] są surowe i nieważne.

$ form_state ['input'] jest przydatny w formularzach wieloetapowych, zakładając, że wiesz, jak bezpiecznie obsługiwać surowe dane wejściowe .... Zobacz form_builder, aby uzyskać więcej informacji ...

Anil Sagar
źródło
1

Jeśli nie wiesz, co robisz, $form_state['values']to są to przetworzone wartości formularza. $form_state['input']to surowe dane. Zobacz kod dla form_builder: https: //api.drupal.org/api ....

Adi
źródło
0

W 99,9% przypadków, $form_state['values']i $form_state['input']są identyczne.

Ale - uważaj na część 1%, szczególnie gdy używasz pola date_popup , ponieważ jego dane wejściowe są przechowywane w 'input', ale NIE w tablicy 'values'.

derrekc
źródło
0

$form_state['values']powinny być używane w większości przypadków jako $form_state['input']surowe i unieważnione wartości. Również w $form_state['values']wartościach domyślnych są przekazywane, gdy przesyłanie formularza nie powiedzie się, ale w przypadku $form_state['input']przekazania wartości NULL.

Anil Kumar
źródło
-4

W funkcji drupal_form_submit możesz zobaczyć następujący kod:

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

Więc jest dokładnie tak samo.

Lovau
źródło
4
Powyższa funkcja służy do programowego przesyłania formularza ... Nie odpowiada OP Pytanie ..
Anil Sagar