Diferencia entre $ form_state ['valores'] y $ form_state ['input']

24

¿Puede alguien decirme la diferencia entre estas dos variables?

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

Opcionalmente, algún ejemplo de acción con el que se utilizan. Me pregunto especialmente sobre el uso con ajax en forma drupal. ¿Cuál de estos debo usar en la devolución de llamada ajax para obtener valores de entrada del formulario?

hajnyon
fuente

Respuestas:

27

La diferencia crucial aquí es que, en la mayoría de los casos, debería usar $ form_state ['valores']; dado que los datos en la matriz $ form_state ['input'] son ​​crudos y no validados.

$ form_state ['input'] es útil para formularios de varios pasos, suponiendo que esté familiarizado con la forma segura de manejar la entrada sin formato ... Consulte form_builder para obtener más información ...

Anil Sagar
fuente
1

A menos que sepa lo que está haciendo, usted $form_state['values']es los valores de formulario procesados. $form_state['input']son los datos en bruto. Consulte el código de form_builder: https: //api.drupal.org/api ....

Adi
fuente
0

En el 99,9% de los casos, $form_state['values']y $form_state['input']son idénticos.

Pero, tenga cuidado con una parte del 1%, particularmente cuando se utiliza el campo date_popup , ya que su entrada se almacena en 'input', pero NO en la matriz de 'valores'.

derrekc
fuente
0

$form_state['values']Se deben usar en la mayoría de los casos, ya que $form_state['input']contienen el valor bruto e invalidado. También en $form_state['values']valores predeterminados se pasan cuando falla el envío del formulario, pero en caso de $form_state['input']pasar NULL.

Anil Kumar
fuente
-4

En la función drupal_form_submit , puede ver el siguiente código:

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

Entonces es exactamente lo mismo.

Lovau
fuente
44
La función anterior se usa para enviar el formulario mediante programación ... No responde la pregunta OP.
Anil Sagar