2011-11-24 10 views
6

Tengo un formulario implementado desde hook_form llamado simplequiz_form() Quiero acceder a sus datos después de enviar a continuación es el código que he escrito, pero parece que no puedo acceder a su datos una vez presentados. Qué estoy haciendo mal ?Cómo acceder a los datos del formulario en hook_form_validate() en 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; 
} 

A continuación es mi implementación de 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; 

} 

si uso $ form_state [ 'valores'] [ 'pregunta']

consigo el error a continuación:

PDOExcepción: SQLSTATE [21S01]: la lista de valores de inserción no coincide con la lista de columnas: 1136 El recuento de columnas no coincide con el recuento de valores a t fila 1: INSERT INTO {simplequiz} (preguntas) VALUES (: db_insert_placeholder_0_value,: db_insert_placeholder_0_format); Array ([: db_insert_placeholder_0_value] => [: db_insert_placeholder_0_format] => filtered_html) en simplequiz_form_submit() (línea 245 de /home/vishal/Dropbox/sites/dev/sites/all/modules/simplequiz/simplequiz.module).

funcionó usando $ form_state [ 'valores'] [ 'pregunta'] [ 'valor']

Respuesta

9

Es mejor práctica utilizar hook_form_validate, sólo para fines de validación, aparte de validación algo que se debe hacer en hook_form_submit.

De cualquier forma, ambos funcionan casi de la misma manera.

Todos los datos del formulario se almacenan en $form_state['values'], por lo que para acceder a los valores $form['questions'], simplemente use $form_state['values']['questions'].

+0

funcionó Tuve que cambiarlo un poco aunque $ form_state ['values'] ['question'] ['value'] –

+1

Solo un comentario: no hay hook_form_validate(). Esto se conoce como "forma validate handler". – pfrenssen

Cuestiones relacionadas