Differenza tra $ form_state ['valori'] e $ form_state ['input']


24

Qualcuno può dirmi la differenza tra queste due variabili?

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

Opzionalmente alcuni esempi di azioni con cui vengono utilizzati. Mi chiedo soprattutto di usare con Ajax in forma di drupal. Quale di questi dovrei usare nel callback ajax per ottenere i valori di input dal modulo?

Risposte:


27

La differenza cruciale qui è che nella maggior parte dei casi dovresti usare $ form_state ['valori']; poiché i dati sull'array $ form_state ['input'] sono grezzi e non convalidati.

$ form_state ['input'] è utile per i moduli multi-step, supponendo che tu abbia familiarità con la gestione sicura dell'input grezzo .... Vedi form_builder per maggiori informazioni ...


1

A meno che tu non sappia cosa stai facendo, $form_state['values']sono i valori del modulo elaborati. $form_state['input']sono i dati grezzi. Vedi il codice per form_builder: https: //api.drupal.org/api ....


0

Nel 99,9% dei casi, $form_state['values']e $form_state['input']sono identici.

Ma attenzione a una parte dell'1%, in particolare quando si utilizza il campo date_popup , poiché l'input è memorizzato in "input", ma NON nell'array "valori".


0

$form_state['values']dovrebbe essere utilizzato nella maggior parte dei casi in quanto $form_state['input']contiene il valore non elaborato e non valido. Anche nei $form_state['values']valori predefiniti vengono passati quando l'invio del modulo non riesce, ma in caso di $form_state['input']NULL viene passato.


-4

Nella funzione drupal_form_submit , puoi vedere il seguente codice:

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

Quindi è esattamente lo stesso.


4
La funzione sopra è usata per inviare programmaticamente il modulo ... Non risponde alla domanda OP ..
Anil Sagar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.