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支持这个还是我做它?
另外,还有其他方法可以达到同样的目的吗?
这是一个实现你想要做的事情的例子.
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也是我使用过的最好的表单框架之一.
希望这可以帮助.