2010-10-22 79 views
0

我正在創建一個表單,我必須根據數據庫中的值填充「X」表單元素(特定的文本字段) X個元素,每個元素的屬性等)。有沒有辦法使用Drupal Form API來做到這一點,或者我應該從其他地方開始。 我試着在窗體生成函數中使用for()循環,但這不起作用。請發佈您的建議和任何相關鏈接。Drupal表單API:基於數據庫值創建表單元素(動態表單創建)

回答

1

確定你可以,只需將#default_value與來自數據庫的值進行比較。

$form['text'] = array(
    '#type' => 'textfield', 
    '#default_value' => $db->val, 
); 

編輯 說你有一個問卷調查對象($questionnaire)包含名爲了保存你所有的問題「question_list」參數;你所能做的就是在列表上運行一個foreach像:

$form['questionnaire'] = array('#type'=>'fieldset','#title'=>$questionnaire->title,); 

foreach($questionnaire->question_list as $id=>$question_obj){ 
$form['questionnaire']['question_'.$id]=array(
'#type'=>'textfield', 
'#title'=>$question->question, 
'#default_value'=>$form_state['values']['question_'.$id], 
); 

}

在最後你將有每個問題是由標識的關聯數組「的問題_」的$ id

我希望這是你要找的。 :)

+0

感謝您的答案,但我正在尋找的是創建一個「數量」的表單元素,其中數字從數據庫中拉出。假設我有問卷,問題存儲在數據庫中,那麼現在頁面需要爲每個問題生成一個文本字段(#問題數量,#問題屬性在數據庫中)。我們可以使用Form API來做到這一點嗎? – 2010-10-23 19:31:18

+0

編輯我的答案,希望我現在完全明白你的問題:) – Bladedu 2010-10-24 08:23:18

+0

謝謝你的回答。我意識到我在代碼中省略了「$」,for循環現在可以工作。新手經驗教訓:在跳到SF之前查看你的代碼。 – 2010-10-24 17:17:51