0

テーブルのテーマを使用しています。以下に示すのは、行と列に値を表示するテーブルを作成する際の ataempt のコード全体です。コードには私のテーマの登録も含まれています。値は、コード内にある fileId 、fileName などの 6 つの配列から取得されます。このコードを使用して、この出力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;

      }

ありがとうアンジェラ

4

1 に答える 1

0

そこにはいくつかの問題があると思います。主に、フォームキーの割り当てに一貫性がないため、一部の要素が実際に既存の要素を上書きしており、一部の要素がループ内で見つからず、テーブルの後に通常のフォームアイテムとして出力されています。 . コードもおそらく少し短くなる可能性があります。これを試してください:

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
于 2011-12-30T03:51:23.583 に答える