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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top