Я создал форму в админке.
$form['things'] = array(
'#prefix' => '<div id="things">',
'#suffix' => '</div>',
'#tree' => TRUE,
'#theme' => 'table',
'#header' => array(t('Field Label'), t('Field Name'), t('Location'), t('Stuff')),
'#rows' => array(),
);
Затем я добавляю каждую строку к нему как:
foreach ($type_fields as $field_name => $attrs) {
$stuff = array(
'#type' => 'textfield',
'#default_value' => $attrs['stuff'],
);
$form['things']['#rows'][] = array(
array('data' => 'label'),
array('data' => $field_name),
array('data' => $field_name),
array('data' => $stuff),
);
}
Форма выглядит великолепно! Но первая проблема заключается в том, что присвоенное значение #default_value
не отображается в форме. Когда я изменяю его #value
на правильное значение, появляется. Вот интересно, как это сделать? Документация Drupal говорит, #value
что не следует использовать с формами, хотя она функционирует именно так, как я ожидаю, что она будет работать.
Основная проблема - когда я заполняю некоторые тестовые данные в одном из текстовых полей и отправляю их: я не вижу ни одного из переданных значений в моей _submit
функции.
Ни содержит, $form
ни $form_state
содержит значения, которые я ввожу в текстовые поля.
Интересно, это потому что я рендеринг #theme => "table"
? Кто-нибудь сталкивался с этой проблемой? Любые идеи об изменениях, которые я могу сделать, которые позволили бы мне видеть значения, которые я ввожу, когда я отправляю форму в _submit
функцию?