Drupal自定义模块/表单问题:添加字段数组

问题描述:

我正在创建一个自定义模块,我想为特定字段添加“添加另一项”功能,但似乎无法弄清楚我为了完成这个需要做什么......我一直在通过Drupal论坛和他们的Forms API参考,但我不能得到一些东西....我使用Drupal 6.20,在我的模块中,我想:Drupal自定义模块/表单问题:添加字段数组

$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]"> 

但是,我只是得到一个n输入看起来像这样:

<input type="text" class="form-text" value="" size="60" id="edit-address" name="address" maxlength="128"> 

您需要在要复制的元素上面的元素上设置#tree。 FAPI将从该元素向下的树结构中存储值。

为了得到这样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'), 
); 

但你并不需要[value]一部分,除非你实际上是试图实现多值编组场或者如果你的领域有一个复杂的(自定义)数据类型,实现多个PHP值(即纬度/经度,开始/停止日期等)。

你也可能需要存储的东西值的数量一样$form['options']['#nb_values']或在隐藏字段(如果你打算到其他字段添加到使用JavaScript的形式)。