【问题标题】:How do I create an array of form fields?如何创建表单字段数组?
【发布时间】:2011-02-03 01:22:20
【问题描述】:

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

这是我尝试使用的代码:

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

【问题讨论】:

    标签: drupal forms


    【解决方案1】:

    实际上,您只需要这样做,但请记住,这也会改变表单提交函数中返回值的方式(您将获得一个嵌套数组,而不是 $form_state['values'] 中的单独值)。

    $form['contact']['#tree'] = TRUE;
    

    【讨论】:

    • 谢谢!不知道这甚至是一种选择
    【解决方案2】:

    提供的答案正是我所需要的。这是我的代码,可能会对未来的开发者有所帮助。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-14
      • 2014-02-18
      • 2018-12-09
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      相关资源
      最近更新 更多