2011-11-24 12 views
6

Ho un modulo implementato da hook_form chiamato simplequiz_form() Desidero accedere ai suoi dati dopo aver inviato di seguito è il codice che ho scritto ma non riesco ad accedere al suo dati una volta inviati. Che cosa sto facendo di sbagliato ?Come accedere ai dati del modulo in hook_form_validate() in drupal 7

function simplequiz_form_validate($form, &$form_state) { 
// here is where we will validate the data and save it in the db. 
$thid = db_insert('simplequiz') 
->fields(array(

'questions' => &$form_state['question'], 
**I can't seem to access the value of a field questions** 

)) 
->execute(); 

return $thid; 
} 

Qui di seguito è la mia realizzazione di hook_form()

function simplequiz_form($form, &$form_submit) 
{ 

$form['question'] = array(
'#title' => t('Please input your question'), 
'#type' => 'text_format', 
'#required' => FALSE, 
'#description' => t('Here is where you can enter your questions'),  
); 

$form['submit'] = array(
'#type' => 'submit', 
'#value' => 'Submit', 
); 
return $form; 

} 

se uso $ form_state [ 'valori'] [ 'question']

ottengo l'errore qui sotto:

PDOException: SQLSTATE [21S01]: l'elenco di valori di inserimento non corrisponde all'elenco di colonne: 1136 Il conteggio di colonne non corrisponde al conteggio di valori a t riga 1: INSERIRE IN {simplequiz} (domande) VALORI (: db_insert_placeholder_0_value,: db_insert_placeholder_0_format); Array ([: db_insert_placeholder_0_value] => [: db_insert_placeholder_0_format] => filtered_html) in simplequiz_form_submit() (riga 245 di /home/vishal/Dropbox/sites/dev/sites/all/modules/simplequiz/simplequiz.module).

ha funzionato usando $ form_state [ 'valori'] [ 'domanda'] [ 'valore']

risposta

9

E 'buona norma usare hook_form_validate, solo per scopi di convalida, qualcosa di diverso convalida dovrebbe essere fatto in hook_form_submit.

In entrambi i casi funzionano entrambi allo stesso modo.

Tutti i dati del modulo sono memorizzati in $form_state['values'], quindi per accedere ai valori $form['questions'], utilizzare solo $form_state['values']['questions'].

+0

ha funzionato Ho dovuto cambiarlo un po 'anche se $ form_state [' values ​​'] [' question '] [' value '] –

+1

Solo una nota: non esiste hook_form_validate(). Questo è noto come "form validate handler". – pfrenssen

Problemi correlati