Как мне создать массив полей формы? - PullRequest
0 голосов
/ 03 февраля 2011

Я пишу собственный модуль и пытаюсь создать массив полей формы, но, похоже, это не то, что я делаю.

Вот код, который я пытаюсь использовать:

for($i = 0; $i < 3; $i++) {
  $form['contact'][$i]['value'] = array(
     '#type' => 'textfield',
     '#title' => 'Contact Name',
     '#size' => 50,
  );
}

При этом я ожидал, что форма напечатает поле следующим образом:

<input type="text" value="" size="50" name="contact[0][value]" />
<input type="text" value="" size="50" name="contact[1][value]" />
<input type="text" value="" size="50" name="contact[2][value]" />

Вместо этоговыводит:

<input type="text" value="" size="50" name="0" />
<input type="text" value="" size="50" name="1" />
<input type="text" value="" size="50" name="2" />

Ответы [ 2 ]

4 голосов
/ 03 февраля 2011

На самом деле все, что вам нужно, это сделать, но имейте в виду, что это также меняет способ возврата значений в функции отправки формы (вы получите вложенный массив, а не отдельные значения в $ form_state ['values']).

$form['contact']['#tree'] = TRUE;
0 голосов
/ 25 июля 2014

Ответ предоставлен именно то, что мне нужно.Это мой код, который, вероятно, поможет будущим разработчикам.

$form['results']['subject'] = array(
    '#tree' => TRUE
);

foreach($subjectList as $subject) {
    $form['results']['subject'][$subject->id] = array(
        '#type'      => 'textfield',
        '#title'     => $subject->name, 
        '#maxlength' => 3, 
        '#required'  => TRUE,
    );
}    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...