Ho creato un modulo nell'amministratore.
$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(),
);
Aggiungo quindi ogni riga come segue:
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),
);
}
Il modulo sembra fantastico! Ma il primo problema è che il valore assegnato #default_value
non viene visualizzato nel modulo. Quando lo cambio al #value
valore corretto, viene visualizzato. Quindi mi chiedo come dovrebbe essere fatto? La documentazione di Drupal dice #value
che non dovrebbe essere usato con i moduli sebbene funzioni esattamente come mi aspetto che funzioni.
Il problema principale è quando inserisco alcuni dati di test in uno dei campi di testo e li invio: non vedo nessuno dei valori inviati nella mia _submit
funzione.
Né $form
, né $form_state
contiene uno dei valori introdotti ho nei campi di testo.
Mi chiedo se questo è perché sto rendering #theme => "table"
? Qualcuno ha riscontrato questo problema? Qualche idea sulle modifiche che posso apportare mi consentirebbe di vedere i valori che inserisco quando invio il modulo alla _submit
funzione?