2012-05-11 1 views
1

Я работаю над модулем Drupal 6, который я хочу создать таблицу с флажками в каждой строке из данных, которые я сохранил в базе данных. Таблица генерируется отлично, но флажки не отображаются в таблице, а вместо этого их идентификатор узла помещается ниже таблицы. Смотрите скриншот ниже:Drupal 6: таблица флажков не отображается должным образом

drupal checkboxes

"21" является идентификатор узла "Test Question 01" и "19" является идентификатор узла "Test Question 02".

код я использую (да, это все функции тема, которая не является идеальным, я планирую двигаться вещи вокруг, как только проблема флажков будет решена.):

function theme_qt_assignment_questions_table($form) { 
    // Get the questions from the database 
    $db_results = db_query('SELECT {qt_questions}.nid, title, lesson, unit FROM node INNER JOIN {qt_questions} on {node}.nid = {qt_questions}.nid WHERE lesson = %d AND unit = %d', 
        $form['#lesson'], $form['#unit']); 

    // Define the headers for the table 
    $headers = array(
    theme('table_select_header_cell'), 
    array('data' => t('Title'), 'field' => 'title'/*, 'sort' => 'asc'*/), 
    array('data' => t('Lesson'), 'field' => 'lesson'), 
    array('data' => t('Unit'), 'field' => 'unit'), 
); 

    while($row = db_fetch_object($db_results)) { 
    $checkboxes[$row->nid] = ''; 

    $form['nid'][$row->nid] = array(
     '#value' => $row->nid 
    ); 
    $form['title'][$row->nid] = array(
     '#value' => $row->title 
    ); 
    $form['lesson'][$row->nid] = array(
     '#value' => $row->lesson 
    ); 
    $form['unit'][$row->nid] = array(
     '#value' => $row->unit 
    ); 
    } 

    $form['checkboxes'] = array(
    '#type' => 'checkboxes', 
    '#options' => $checkboxes, 
); 

    // Add the questions to the table 
    if(!empty($form['checkboxes']['#options'])) { 
    foreach(element_children($form['nid']) as $nid) { 
     $questions[] = array(
     drupal_render($form['checkboxes'][$nid]), 
     drupal_render($form['title'][$nid]), 
     drupal_render($form['lesson'][$nid]), 
     drupal_render($form['unit'][$nid]), 
    ); 
    } 
    } else { 
    // If no query results, show as such in the table 
    $questions[] = array(array('data' => '<div class="error">No questions available for selected lesson and unit.</div>', 'colspan' => 4)); 
    } 

    // Render the table and return the result 
    $output = theme('table', $headers, $questions); 

    $output .= drupal_render($form); 
    return $output; 
} 

ответ

0

ПРЕВРАЩАЕТСЯ моя попытка упростить проблему была, по сути, проблемой. А именно, делать все в hook_theme неверно. Скорее всего, я определил функцию, которая вытягивает информацию из базы данных и создает массив Флажки и назвать его в hook_form как таковой:

$form['questions_wrapper']['questions'] = _qt_get_questions_table($node->lesson, $node->unit); 

В конце этой функции (_qt_get_questions_table()), я задать функцию темы, которая поместить все в стол, как например:

$form['#theme'] = 'qt_assignment_questions_table'; 

Я еще новичок в Drupal, так что это объяснение не может быть лучше, чтобы кто-то с той же проблемой, но, надеюсь, это поможет.

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

  • Нет связанных вопросов^_^