Drupal表单API:基于数据库值创建表单元素(动态表单创建)
问题描述:
我正在创建一个表单,我必须根据数据库中的值填充“X”表单元素(特定的文本字段) X个元素,每个元素的属性等)。有没有办法使用Drupal Form API来做到这一点,或者我应该从其他地方开始。 我试着在窗体生成函数中使用for()循环,但这不起作用。请发布您的建议和任何相关链接。Drupal表单API:基于数据库值创建表单元素(动态表单创建)
答
确定你可以,只需将#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
我希望这是你要找的。 :)
感谢您的答案,但我正在寻找的是创建一个“数量”的表单元素,其中数字从数据库中拉出。假设我有问卷,问题存储在数据库中,那么现在页面需要为每个问题生成一个文本字段(#问题数量,#问题属性在数据库中)。我们可以使用Form API来做到这一点吗? – 2010-10-23 19:31:18
编辑我的答案,希望我现在完全明白你的问题:) – Bladedu 2010-10-24 08:23:18
谢谢你的回答。我意识到我在代码中省略了“$”,for循环现在可以工作。新手经验教训:在跳到SF之前查看你的代码。 – 2010-10-24 17:17:51