Разница между $ form_state ['values'] и $ form_state ['input']

24

Может кто-нибудь сказать, пожалуйста, разницу между этими двумя переменными?

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

При желании некоторые примеры действий, с которыми они используются. Меня особенно интересует использование с ajax в форме drupal. Какие из них я должен использовать в обратном вызове ajax, чтобы получить входные значения из формы?

hajnyon
источник

Ответы:

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 ....

Adi
источник
0

В 99,9% случаев $form_state['values']и $form_state['input']идентичны.

Но - остерегайтесь части 1%, особенно при использовании поля date_popup , так как его входные данные хранятся во «input», но НЕ в массиве «values».

derrekc
источник
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'];

Так что это точно так же.

Lovau
источник
4
Выше функция используется для программной отправки формы ... Она не отвечает на вопрос ОП ..
Анил Сагар