我正在创建一个自定义模块,我希望为特定字段添加“添加其他项目”功能,但我似乎无法弄清楚我需要做什么才能完成此任务。我一直在浏览Drupal论坛和他们的Forms API参考,但我一定不能得到一些东西....我正在使用Drupal 6.20,在我的模块中,我尝试过:
$form['options'] = array(
'#title' => t('Options'),
'#type' => 'fieldset',
);
$form['options']['address'] = array(
'#type'=>'textfield',
'#title'=>t('Address'),
'#tree' => 1,
);
想我会得到一个看起来像这样的文字输入:
<input type="text" class="form-text text" value="" size="60" id="edit-address-0-value" name="address[0][value]">
但是,我只是得到一个看起来像这样的输入:
<input type="text" class="form-text" value="" size="60" id="edit-address" name="address" maxlength="128">
答案 0 :(得分:1)
您需要在要复制的元素上方的元素上设置#tree。 FAPI将值从该元素向下存储在树结构中。
答案 1 :(得分:0)
要获得类似address[0][value]
的名称,您需要类似
$form['options']['address'] = array(
'#tree' => TRUE,
);
$form['options']['address'][0] = array(
'#tree' => TRUE,
);
$form['options']['address'][0]['value'] = array(
'#type'=>'textfield',
'#title'=>t('Address'),
);
但是除非您实际尝试实现多值分组字段,或者您的字段具有使用多个PHP值实现的复杂(自定义)数据类型(即纬度/),否则您不需要[value]
部分经度,开始/停止日期等。)。
您可能还需要将值的数量存储在$form['options']['#nb_values']
或隐藏字段中(如果您打算使用JavaScript将其他字段添加到表单中)。