Как оформить таблицу Drupal 6 для вывода массива в строках и столбцах?

Я использую темы таблиц. Ниже показан весь мой код для моей попытки создать таблицу для отображения значений в строках и столбцах. Код также содержит регистрацию моей темы. Значения исходят из 6 массивов, видимых внутри кода, а именно fileId, fileName и т. д. Теперь, используя этот код, я получаю этот вывод http://www.image-share.com/ijpg-1166-290.html. Желаемый результат должен выглядеть так: http://www.image-share.com/ijpg-1166-289.html. Массив заполняется правильно, так как я успешно распечатал значения, как показано здесь http://www.image-share.com/ijpg-1166-288.html Мне не нужны флажки, но я использовал этот код, так как следовал ему из примера, который использовал ранее.

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

    function freeway_dashboard_details(){

 $pidobtained = $_GET['project_id'] ;


  $fileId = array();
   $fileName = array();
  $srcLang = array();
   $targLang = array();
   $statusId = array();
   $statusDesc = array();

   $LoginClient = new SoapClient("https://freeway.demo.company.com/vojo/FreewayAuth.asmx?wsdl", array("trace"=>1)); 
  $ServicesLink = new SoapClient("https://freeway.demo.company.com/vojo/Service.asmx?wsdl", array("trace"=>1));

        try
        {
            $arrResponse = $LoginClient->Logon(array ('Username'=>'','Password'=>''));
            $ticket = ($arrResponse->LogonResult);
            $fileStatus = $ServicesLink->GetFileStatus(array('Ticket'=>$ticket,'ProjectID'=>$pidobtained,'SourceLanguageID'=> "", 'TargetLanguageID'=> "",'FileID'=> "",'Filename'=>""));
            $arrayPid = array();

            foreach($fileStatus->GetFileStatusResult->FileStatuses->FileStatus as $fileStatusObtained)
            {
                $arrayPid = get_object_vars($fileStatusObtained);
                //print_r($fileStatusObtained->FileID);                 
                 $fileId [] = $fileStatusObtained->FileID;
                 $fileName[] = $fileStatusObtained->Filename;
                 $srcLang[] =  $fileStatusObtained->SourceLanguageID;
                 $targLang[] = $fileStatusObtained->TargetLanguageID;
                 $statusId[] = $fileStatusObtained->StatusID;
                 $statusDesc[] = $fileStatusObtained->StatusDescription;
            }





          for($n=0;$n <count($fileId);$n+=1){
           $options[$fileId[$n]] = '';
           $form[$fileId[$n]]['FileID'] = array('#value' =>  $fileId[$n]);
           $form[$fileName[$n]]['FileName'] = array('#value' =>  $fileName[$n]);
           $form[$srcLang[$n]]['SrcLang'] = array('#value' =>  $srcLang[$n]);
           $form[$targLang[$n]]['TarLang'] = array('#value' =>  $targLang[$n]); 
           $form[$statusId[$n]]['StatusID'] = array('#value' =>  $statusId[$n]);    
           $form[$statusDesc[$n]]['StatusDesc'] = array('#value' =>  $statusDesc[$n]);                 
          }

        }

        catch(SoapFault $exception)
        {                  
           return $exception;

        }


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

   return $form;


 }



  function freeway_theme() {
 return array('freeway_dashboard' => array('arguments' => array('form' => NULL),),'freeway_dashboard_details' => array('arguments' => array('form' => NULL),),);
     }



     function theme_freeway_dashboard_details($form) {
            $rows = array();
            foreach (element_children($form) as $key) {
            $row = array();
                    if (isset($form[$key]['FileID'])) {
                    $status = drupal_render($form['featured'][$key]);
                    $row[] = array('data' => $status, 'class' => 'checkbox');
                    $row[] = ''. drupal_render($form[$key]['FileID']) .'';
                    $row[] = array('data' => drupal_render($form[$key]['FileName']));
                    $row[] = array('data' => drupal_render($form[$key]['SrcLang']));
                    $row[] = array('data' => drupal_render($form[$key]['TarLang']));
                    $row[] = array('data' => drupal_render($form[$key]['StatusID']));




                    $rows[] = $row;

                    }

            }
            $header = array();
            $header[] = array('data' => t('Featured'), 'class' => 'checkbox');
            $header[] = t('File ID');
            $header[] = t('File Name');
            $header[] = t('Source Language');
            $header[] = t('Target Language');
            $header[] = t('Status ID');
            $header[] = t('Status Description');


            $output = theme('table', $header, $rows,array('size'=>10, 'class' => 'table_class'));
            $output .= drupal_render($form);


        return $output;

      }

Спасибо Анжела


person Angela Sim    schedule 28.12.2011    source источник


Ответы (1)


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

In freeway_dashboard_details():

$form['#table_values'] = array();
$options = array();
foreach ($fileStatus->GetFileStatusResult->FileStatuses->FileStatus as $fileStatusObtained) {
  $form['#table_values'][$fileStatusObtained->FileID] = array(
    'fileId' => $fileStatusObtained->FileID,
    'fileName' => $fileStatusObtained->Filename,
    'srcLang' => $fileStatusObtained->SourceLanguageID,
    'targLang' => $fileStatusObtained->TargetLanguageID,
    'statusId' => $fileStatusObtained->StatusID,
    'statusDesc' => $fileStatusObtained->StatusDescription
   );

  $options[$fileStatusObtained->FileID] = '';
}

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

И в freeway_theme():

$rows = array();
foreach (element_children($form['featured']) as $key) {
  $row = array();
  if (isset($form['#table_values'][$key])) {
    $status = drupal_render($form['featured'][$key]);
    $row[] = array('data' => $status, 'class' => 'checkbox');
    $row[] = array('data' => $form['#table_values'][$key]['fileId']);
    $row[] = array('data' => $form['#table_values'][$key]['fileName']);
    $row[] = array('data' => $form['#table_values'][$key]['srcLang']);
    $row[] = array('data' => $form['#table_values'][$key]['targLang']);
    $row[] = array('data' => $form['#table_values'][$key]['statusId']);
    $row[] = array('data' => $form['#table_values'][$key]['statusDesc']);

    $rows[] = $row;
  }
}

// Rest of the code as it was
person Clive    schedule 30.12.2011