2010-10-22 68 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