2011-11-24 35 views
6

Tôi có một biểu mẫu được thực hiện từ hook_form được gọi là simplequiz_form() Tôi muốn truy cập dữ liệu của nó sau khi gửi dưới đây là mã tôi đã viết nhưng dường như tôi không thể truy cập dữ liệu sau khi được gửi. Tôi đang làm gì sai?Làm thế nào để truy cập dữ liệu biểu mẫu trong hook_form_validate() trong 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; 
} 

Dưới đây là thực hiện của tôi 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; 

} 

nếu tôi sử dụng $ form_state [ 'giá trị'] [ 'câu hỏi']

tôi nhận được báo lỗi dưới đây:

PDOException: SQLSTATE [21S01]: Chèn danh sách giá trị không khớp với danh sách cột: 1136 Số lượng cột không khớp với số lượng giá trị t hàng 1: INSERT INTO {simplequiz} (câu hỏi) GIÁ TRỊ (: db_insert_placeholder_0_value,: db_insert_placeholder_0_format); Array ([: db_insert_placeholder_0_value] => [: db_insert_placeholder_0_format] => filtering_html) trong simplequiz_form_submit() (dòng 245 /home/vishal/Dropbox/sites/dev/sites/all/modules/simplequiz/simplequiz.module).

nó làm việc sử dụng $ form_state [ 'giá trị'] [ 'câu hỏi'] [ 'giá trị']

Trả lời

9

Đó là thực hành tốt nhất để sử dụng hook_form_validate, chỉ dành riêng cho mục đích xác nhận, bất cứ điều gì khác hơn là xác nhận nên được thực hiện trong hook_form_submit.

Cả hai cách đều hoạt động gần như giống nhau.

Tất cả dữ liệu biểu mẫu được lưu trữ trong $form_state['values'], do đó, để truy cập vào $form['questions'] giá trị, chỉ cần sử dụng $form_state['values']['questions'].

+0

nó hoạt động tôi phải thay đổi nó một chút mặc dù $ form_state ['values'] ['question'] ['value'] –

+1

Chỉ cần một chú thích: không có hook_form_validate(). Điều này được gọi là "trình xử lý hợp lệ biểu mẫu". – pfrenssen

Các vấn đề liên quan