Utworzyłem formularz w adminie.
$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(),
);
Następnie dodaję do niego każdy wiersz w następujący sposób:
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),
);
}
Forma wygląda świetnie! Ale pierwszym problemem jest to, że przypisana wartość #default_value
nie pojawia się w formularzu. Kiedy zmienię to #value
na prawidłową wartość, pojawia się. Zastanawiam się więc, jak to zrobić? Dokumentacja Drupala mówi, że #value
nie należy jej używać z formularzami, chociaż działa ona dokładnie tak, jakbym tego oczekiwał.
Głównym problemem jest wypełnienie niektórych danych testowych w jednym z pól tekstowych i przesłanie ich: nie widzę żadnej z przesłanych wartości w mojej _submit
funkcji.
Ani $form
nie $form_state
zawiera żadnych wartości, które wprowadzam do pól tekstowych.
Zastanawiam się, czy to dlatego, że renderuję #theme => "table"
? Czy ktoś napotkał ten problem? Jakieś pomysły na zmiany, które mogę wprowadzić, które pozwoliłyby mi zobaczyć wartości, które wprowadzam, gdy publikuję formularz w _submit
funkcji?