Как создать тему для таблицы 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;
}
Спасибо анжела
1 ответ
Я думаю, что здесь есть пара проблем, в основном из-за того, что ваше назначение ключей формы несовместимо, поэтому некоторые элементы фактически перезаписывают существующие, а некоторые не обнаруживаются в вашем цикле и выводятся после таблицы как обычные элементы формы., Ваш код может быть немного короче, попробуйте это:
В 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