我正在编写一个自定义模块,我正在尝试创建一个表单字段数组,但它似乎不是我正在做的事情。
这是我正在尝试使用的代码:
for($i = 0; $i < 3; $i++) {
$form['contact'][$i]['value'] = array(
'#type' => 'textfield',
'#title' => 'Contact Name',
'#size' => 50,
);
}
这样做,我希望表单打印字段为:
<input type="text" value="" size="50" name="contact[0][value]" />
<input type="text" value="" size="50" name="contact[1][value]" />
<input type="text" value="" size="50" name="contact[2][value]" />
相反,它输出:
<input type="text" value="" size="50" name="0" />
<input type="text" value="" size="50" name="1" />
<input type="text" value="" size="50" name="2" />
答案 0 :(得分:4)
实际上,您只需要执行此操作,但请记住,这也会更改表单提交函数中返回值的方式(您将获得嵌套数组,而不是$ form_state ['values']中的单独值)。
$form['contact']['#tree'] = TRUE;
答案 1 :(得分:0)
提供的答案正是我所需要的。这是我的代码,可能会帮助未来的开发人员。
$form['results']['subject'] = array(
'#tree' => TRUE
);
foreach($subjectList as $subject) {
$form['results']['subject'][$subject->id] = array(
'#type' => 'textfield',
'#title' => $subject->name,
'#maxlength' => 3,
'#required' => TRUE,
);
}