Différence entre $ form_state ['values'] et $ form_state ['input']

24

Quelqu'un peut-il me dire la différence entre ces deux variables?

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

Facultativement, un exemple d'action avec lequel ils sont utilisés. Je me demande surtout comment utiliser avec ajax sous forme drupal. Lequel de ces éléments dois-je utiliser dans le rappel ajax pour obtenir les valeurs d'entrée du formulaire?

hajnyon
la source

Réponses:

27

La différence cruciale ici est que dans la plupart des cas, vous devez utiliser $ form_state ['values']; car les données du tableau $ form_state ['input'] sont brutes et non validées.

$ form_state ['input'] est utile pour les formulaires à plusieurs étapes, en supposant que vous savez comment gérer en toute sécurité les entrées brutes .... Voir form_builder pour plus d'informations ...

Anil Sagar
la source
1

À moins que vous ne sachiez ce que vous faites, $form_state['values']ce sont les valeurs de formulaire traitées. $form_state['input']sont les données brutes. Voir le code de form_builder: https: //api.drupal.org/api ....

Adi
la source
0

Dans 99,9% des cas, $form_state['values']et $form_state['input']sont identiques.

Mais - méfiez-vous d'une partie du 1%, en particulier lorsque vous utilisez le champ date_popup , car son entrée est stockée dans «entrée», mais PAS dans le tableau «valeurs».

derrekc
la source
0

$form_state['values']devrait être utilisé dans la plupart des cas comme $form_state['input']contenant la valeur brute et invalidée. Les $form_state['values']valeurs par défaut sont également transmises lorsque la soumission du formulaire échoue, mais en cas de $form_state['input']null, la valeur est transmise.

Anil kumar
la source
-4

Dans la fonction drupal_form_submit , vous pouvez voir le code suivant:

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

C'est donc exactement la même chose.

Lovau
la source
4
La fonction ci-dessus est utilisée pour soumettre par programme le formulaire ... Elle ne répond pas à la question OP ..
Anil Sagar