J'ai créé un formulaire dans l'admin.
$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(),
);
J'y ajoute ensuite chaque ligne comme:
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),
);
}
Le formulaire a fière allure! Mais le premier problème est que la valeur attribuée à #default_value
n'apparaît pas dans le formulaire. Lorsque je le change à #value
la valeur correcte, s'affiche. Je me demande donc comment cela devrait être fait? La documentation Drupal dit #value
qu'il ne faut pas l'utiliser avec des formulaires bien qu'il fonctionne exactement comme je m'attendais à ce qu'il fonctionne.
Le problème principal est lorsque je remplis des données de test dans l'un des champs de texte et les soumets: je ne vois aucune des valeurs soumises dans ma _submit
fonction.
Ni $form
ne $form_state
contient aucune des valeurs que je saisis dans les champs de texte.
Je me demande si c'est parce que je rends #theme => "table"
? Quelqu'un at-il rencontré ce problème? Avez-vous des idées de modifications à apporter qui me permettraient de voir les valeurs que j'entre lorsque je poste le formulaire dans la _submit
fonction?