如何创建表单字段数组?

时间:2011-02-03 01:22:21

标签: drupal forms

我正在编写一个自定义模块,我正在尝试创建一个表单字段数组,但它似乎不是我正在做的事情。

这是我正在尝试使用的代码:

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" />

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,
    );
}