2010-10-21 3 views
0

Я пытаюсь отобразить табличный макет (таблица html) для формы, так что первая ячейка содержит флажок.Форма Drupal в табличной компоновке

$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; 

Но все тонированное флажок имеет выход

<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=""> 

Что такое вопрос, имя и значение атрибута не получают применяться на флажков?

ответ

2

Имя и значение не могут быть установлены с использованием атрибутов при использовании API формы. Название связано с ключом элемента формы, так что если у вас

$form['pony'] = $checkbox; 
$form['yes'] = $checkbox; 

первый флажок будет иметь имя pony в то время как второй будет иметь имя yes. Я считаю, что значение для флажков всегда равно 1, но я не уверен на 100%.

Что нужно сделать, чтобы правильно сформировать эту форму, заключается в создании формы в определении формы. Делая что-то вроде этого:

$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; 

Делая какие-нибудь вроде этого, вы можете создать таблицу в функции темы для формы. Оформление элементов формы в функции темы даст им правильное имя.

Смежные вопросы