Многоступенчатая форма drupal с таблицами

Может ли кто-нибудь сказать мне, как сделать многоступенчатую форму drupal, которая печатает таблицу за один из шагов? -

Этот код у меня уже есть, он соответствует второму шагу формы. Это вызывает у меня эту ошибку:

Неустранимая ошибка: невозможно сбросить смещения строк в C: \ wamp \ www \ acadeus \ includes \ form.inc в строке 497

function listarAlumnos($nombre, $apellido) {
    if($nombre=='') {
       $consulta="SELECT * FROM Pinteres WHERE PinApe1='".$apellido."' or PinApe2='".$apellido;
    } else if ($apellido=='') {     
       $consulta="SELECT * FROM Pinteres WHERE PinNom1='".$nombre."' or PinNom2='".$nombre."'";
    } else {
       $consulta="SELECT * FROM Pinteres WHERE (PinNom1='".$nombre."' or PinNom2='".$nombre."') AND (PinApe1='".$apellido."' or PinApe2='".$apellido."')";
    }   
    $resultado=consultarContacta($consulta);    
    $form=array();
    $header = array(t('Id'), t('Primer nombre'), t('Segundo nombre'), t('Primer apellido'), t('Segundo apellido'), t('Direccion'), t('Telefono'), t('Celular'), t('Email'));
    $rows = array();
    while ($rs=odbc_fetch_array($resultado)) {
        $row=array();
        $id=$rs['PinId'];       
        $primerNombre=$rs['PinNom1'];
        $segundoNombre=$rs['PinNom2'];
        $primerApellido=$rs['PinApe1'];
        $segundoApellido=$rs['PinApe2'];
        $direccion=$rs['PinDir'];
        $telefono=$rs['PinTelPri'];
        $celular=$rs['PinTelCel'];
        $email=$rs['PinEMail'];     
        $row[] = $id;
        $row[] = $primerNombre;
        $row[] = $segundoNombre;
        $row[] = $primerApellido;
        $row[] = $segundoApellido;
        $row[] = $direccion; 
        $row[] = $telefono;
        $row[] = $celular;
        $row[] = $email; 
        $rows[] = $row;
    };
    $form['IdIngresado'] = array (
        '#title' => t('Id interesado a importar'),
        '#type' => 'textfield',
        '#required' => TRUE,    
        '#description' => t('Ingrese el id del interesado a importar de los listados arriba.')
    );
    $form['CedulaIngresada'] = array (
        '#title' => t('Cedula interesado a importar'),
        '#type' => 'textfield',
        '#required' => TRUE,    
        '#description' => t('Ingrese la cedula del interesado a importar.')
    );  
    $form['finalizar'] = array (
        '#type' => 'submit',
        '#value' => t('Finalizar')
    );
    $output .= theme('table', $header, $rows);
    $output .= drupal_render($form);
    return $output;
}

Я мог бы заставить его работать, используя такой код:

$form['serial'] = array(
    '#type' => 'textfield',
    '#title' => t('serial number'),
    '#prefix' => '<table><tr><td>',
    '#suffix' => '</td>',
);

но я знаю, что это неправильный способ.


person user602387    schedule 01.08.2011    source источник
comment
Большое спасибо, MEsch. Я добавил $ form ['tabla'] = array ('#value' = ›theme ('table', $ headers, $ rows)); и подставил $ output. = theme ('table', $ header, $ rows); $ output. = drupal_render ($ form); return $ output; с формой возврата $, и это сработало.   -  person user602387    schedule 01.08.2011
comment
Здорово. Примите ответ, чтобы другие читатели знали, что проблема решена.   -  person mesch    schedule 02.08.2011


Ответы (1)


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

$form['table'] = array ('#value' => theme('table', $headers, $rows));

$ headers - это заголовки таблицы, а $ rows - ваши данные.

Если таблица содержит фактические элементы формы (такие как выделение, текстовые поля и т. Д.), Вы можете заключить их в элемент формы, который вызывает функцию темы, например:

$form['table'] = array ('#theme' => 'output_table');

$form['table']['element_1'] = array (...);
$form['table']['element_2'] = array (...);

Внутри 'theme_output_table' сгенерируйте свои $ headers и $ rows для подачи в 'theme_table', вызвав 'drupal_render' для соответствующих элементов формы, которые являются дочерними для $ form ['table'].

person mesch    schedule 01.08.2011