He creado un formulario en el 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(),
);
Luego agrego cada fila 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),
);
}
¡La forma se ve genial! Pero el primer problema es que el valor asignado #default_value
no se muestra en el formulario. Cuando lo cambio al #value
valor correcto, aparece. ¿Entonces me pregunto cómo se debe hacer esto? La documentación de Drupal dice #value
que no debe usarse con formularios, aunque funciona exactamente como esperaría que funcione.
El principal problema es cuando completo algunos datos de prueba en uno de los campos de texto y los envío: no veo ninguno de los valores enviados en mi _submit
función.
Ni $form
tampoco $form_state
contiene cualquiera de los valores ingresados I en los campos de texto.
Me pregunto si esto se debe a que estoy renderizando #theme => "table"
. ¿Alguien se ha encontrado con este problema? ¿Alguna idea sobre los cambios que pueda hacer que me permita ver los valores que estoy ingresando cuando publico el formulario en la _submit
función?