Drupal Custom Module / Form Вопрос: Добавление массива полей - PullRequest
0 голосов
/ 24 апреля 2011

Я создаю пользовательский модуль, в котором я хотел бы иметь функцию «добавить еще один элемент» для определенного поля, но я не могу понять, что мне нужно сделать, чтобы выполнить это .. Я просматривал форумы Drupal и их Справочник по 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">

Ответы [ 2 ]

1 голос
/ 24 апреля 2011

Вам нужно установить #tree для элемента выше того, который вы хотите дублировать.FAPI будет хранить значения в древовидной структуре от этого элемента и далее.

0 голосов
/ 25 апреля 2011

Чтобы получить имя типа 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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...