Как получить доступ к данным формы в hook_form_validate () в drupal 7 - PullRequest
6 голосов
/ 24 ноября 2011

У меня есть форма, реализованная из hook_form, которая называется simplequiz_form (). Я хочу получить доступ к ее данным после отправки. Это код, который я написал, но не могу получить доступ к его данным после отправки.Что я делаю не так?

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;
 }

Ниже моя реализация 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;

}

, если я использую $ form_state ['values'] ['question ']

Я получаю следующую ошибку:

PDOException: SQLSTATE [21S01]: список вставленных значений не соответствует списку столбцов: 1136 Количество столбцов не соответствует количеству значений встрока 1: INSERT INTO {simplequiz} (вопросы) VALUES (: db_insert_placeholder_0_value,: db_insert_placeholder_0_format);Массив ([: db_insert_placeholder_0_value] => [: db_insert_placeholder_0_format] => фильтрованный_html) в simplequiz_form_submit () (строка 245 из /home/vishal/Dropbox/sites/dev/sites/all/modules/simplequiz1.leimple_set_setup_set_setup_set_set_set_set_set_set_set_1*

это работало с использованием $ form_state ['values'] ['question'] ['value']

1 Ответ

9 голосов
/ 24 ноября 2011

Лучше всего использовать hook_form_validate, только для целей проверки, все что угодно, кроме проверки, должно выполняться в hook_form_submit.

В любом случае они оба функционируют почти одинаково.

Все данные формы хранятся в $form_state['values'], поэтому для доступа к $form['questions'] значениям просто используйте $form_state['values']['questions'].

...