Eu criei um formulário no administrador.
$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(),
);
Em seguida, adiciono cada linha a ele como:
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),
);
}
O formulário está ótimo! Mas o primeiro problema é o valor atribuído #default_value
não está aparecendo no formulário. Quando eu mudo para #value
o valor correto aparece. Então, eu me pergunto como isso deve ser feito. A documentação do Drupal diz #value
que não deve ser usada com formulários, embora esteja funcionando exatamente como eu esperaria que funcionasse.
O principal problema é quando preencho alguns dados de teste em um dos campos de texto e os envio: Não vejo nenhum dos valores enviados em minha _submit
função.
Nem $form
nem $form_state
contém qualquer um dos valores introduzidos I nos campos de texto.
Gostaria de saber se isso é porque estou processando #theme => "table"
? Alguém já encontrou esse problema? Alguma idéia de alterações que eu possa fazer que me permita ver os valores que estou inserindo ao publicar o formulário na _submit
função?