在Drupal中将元素表单作为数组

mkj*_*sen 0 drupal drupal-6 drupal-fapi

使用Drupal 6.20.

我们可以设置一些这样的表单元素: -

<input type="select" name="somename[]"><option>ohai</option></select>
Run Code Online (Sandbox Code Playgroud)

然后在PHP中循环使用它们

foreach ($somename as $name) { ... }
Run Code Online (Sandbox Code Playgroud)

我想在Drupal中做同样的事情.我有一个select-elements相同的风格列表.元素的数量可能在将来发生变化,因此表单处理必须是动态的.

如果我使用上述方法,每个元素将覆盖前一个元素,因此最终只有一个元素被打印到屏幕上.我不能写name="somename[$someid]",因为不会解释$somename为数组.
Drupal支持这个还是我做它?

另外,还有其他方法可以达到同样的目的吗?

Sar*_*mro 6

这是一个实现你想要做的事情的例子.


function test_form( &$form_state )
{
  $form = array();
  $delta = 0;
  $form["test_field"]["#tree"] = TRUE;
  $form["test_field"][$delta++] = array(
        "#type" => "textfield",
        "#title" => "Title",
    );
  $form["test_field"][$delta++] = array(
        "#type" => "textfield",
        "#title" => "Title",
    );
  $form["test_field"][$delta++] = array(
        "#type" => "textfield",
        "#title" => "Title",
    );
  $form["submit"] = array(
        "#type" => "submit",
        "#value" => "Submit",
    );
  return $form;
}
Run Code Online (Sandbox Code Playgroud)

在提交和验证功能中,您将获得字段名称下的一系列值.

请记住,在元素上启用#tree是此方法的关键.Drupal的表单API也是我使用过的最好的表单框架之一.

希望这可以帮助.