Drupal Form in tabellarischem Layout
-
10-10-2019 - |
Frage
Ich versuche, eine tabellarische Layout (HTML-Tabelle) für eine Form zu machen, so dass die erste Zelle eine Checkbox enthält.
$form = array();
$res = query('SELECT * FROM {mytable}');
$rows = array();
while($row = db_fetch_array($res)){
$record = array();
$checkbox = array(
'#type' => 'checkbox',
'#attributes' => array(
'value' => $row['id'],
'name' => 'myrecord[]',
),
);
$record[] = drupal_render($checkbox);
$record[] = $row['other_field_1'];
$record[] = $row['other_field_2']
$rows[] = $record;
}
$form['records'] = array(
'#value' => theme('table', array(), $rows);
);
return $form;
Aber das gerenderte Checkbox hat Ausgang
<input type="checkbox" class="form-checkbox" name="" value="1" id="">
<input type="checkbox" class="form-checkbox" name="" value="1" id="">
<input type="checkbox" class="form-checkbox" name="" value="1" id="">
<input type="checkbox" class="form-checkbox" name="" value="1" id="">
Was ist das Problem, dass Name und Wert Attribute nicht auf Kontrollkästchen angewandt zu werden?
Lösung
Der Name und Wert ist nicht etwas, das Sie festlegen können Attribute verwenden, wenn Sie das Formular-API. Der Name, den Schlüssel des Formularelement verbunden ist, so dass, wenn Sie hatte
$form['pony'] = $checkbox;
$form['yes'] = $checkbox;
Die erste Option wird den Namen der pony
hat, während die zweiten die Namen von yes
hat. Ich glaube, dass der Wert für Kontrollkästchen immer 1 ist, aber ich bin nicht 100% sicher.
Was Sie wissen sollten, tun Sie dieses Formular richtig zu machen, ist nur die Form zu erstellen, in der Formulardefinition. Etwas zu tun, wie folgt aus:
$form = array();
$res = query('SELECT * FROM {mytable}');
while($row = db_fetch_array($res)){
$form[$row['id']] = array('#tree' => TRUE);
$form[$row['id']]['checkbox'] = array('#type' => 'checkbox');
$form[$row['id']]['other_field_1'] = array('#value' => $row['other_field_1']);
$form[$row['id']]['other_field_2'] = array('#value' => $row['other_field_1']);
}
return $form;
so etwas wie dies tut, können Sie die Tabelle in einem Thema Funktion für das Formular erstellen. Rendern der Formelemente in das Thema Funktion, geben sie den richtigen Namen.