Різниця між $ form_state ['значення'] і $ form_state ['input']


24

Може хтось скажіть, будь ласка, різницю між цими двома змінними?

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

Необов’язково якийсь приклад дії, з яким вони використовуються. Мені цікаво особливо про використання з аяксом у друпальній формі. Які з них я повинен використовувати в зворотному звороті ajax, щоб отримати вхідні значення з форми?

Відповіді:


27

Принципова відмінність тут полягає в тому, що в більшості випадків ви повинні використовувати $ form_state ['значень']; оскільки дані масиву $ 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 , оскільки його вхід зберігається у "input", а НЕ у масиві "values".


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
Вищенаведена функція використовується для програмного подання форми ... Вона не відповідає на питання ОП.
Аніл Сагар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.