Невозможно передать параметры, используя l (), так как параметр находится в drupal_render - PullRequest
0 голосов
/ 02 января 2012

Это мой код:

 function theme_freeway_dashboard_details($form) {

$pidobtained = $_GET['project_id'] ;

    $rows = array();
    foreach (element_children($form) as $key) {

            $row = array();                 
                $row[] = array('data' => drupal_render($form[$key]['FileID']));
                $row[] = array('data' => drupal_render($form[$key]['Filename']));
                $row[] = array('data' => drupal_render($form[$key]['SourceLanguageID']));
                $row[] = array('data' => drupal_render($form[$key]['TargetLanguageID']));
                $row[] = array('data' => l(drupal_render($form[$key]['StatusID']),'user/1/freewayRetrieve',array('query' => array('fileId'=> $row[0],'projectID'=> $pidobtained))));                            
                $row[] = array('data' => drupal_render($form[$key]['StatusDescription']));                      
                $rows[] = $row;


            }
            $header = array();
            $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 = theme('table', $header, $rows);
            $output .= drupal_render($form);


        return $output;

    }

Я пытаюсь передать пареметр при нажатии на ссылку, параметр - FileID. URL, сгенерированный в результате вышеприведенного кода:

   'http://localhost/drupalTheme/user/1/freewayRetrieve?fileId[data]=157960&projectID=437286' . 

Теперь, когда я пытаюсь получить значения из этого URL из функции subsequesnt, используя

   <?php
    $fileIdbtained = $_GET['fileId[data]'] ;
    $pidobtained = $_GET['projectID'] ;
    ?>

Я получаю значение для projectID, но не для fileID. Это правильный способ доступа к параметрам? Хотелось бы иметь ваши взгляды.

Спасибо A

Ответы [ 2 ]

0 голосов
/ 03 января 2012

Для ясности: в вашем цикле foreach $form[$key]['FileID'] является элементом FAPI .

Другими словами: в каждой итерации цикла переменная $form[$key]['FileID'] (а также $form[$key]['Filename'] и другие) представляет собой массив PHP , который имеет определенную структуру.

Эта «специфическая структура» - та, которую ожидает drupal_render () , чтобы она знала, как «визуализировать» элемент (то есть генерировать строку HTML).

Теперь для случая, когда вы хотите получить фактическое семантическое значение (т. Е. 157960) $form[$key]['FileID'] без HTML, first , вам, очевидно, придется прекратить передавать его через drupal_render () .

Тогда, поскольку $form[$key]['FileID'] является массивом (который содержит структуру элемента FAPI, как я уже упоминал ранее), вам необходимо получить доступ к любому из его элементов , содержащих фактические данные, которые вы после. И, согласно вашему последнему обновлению, этот элемент будет иметь элемент с ключом '# value' .

Итак, вы хотите использовать $form[$key]['FileID']['#value']. То есть строка кода, которая готовит эту строку, должна быть:

$row[] = array('data' => l(drupal_render($form[$key]['StatusID']),'user/1/freewayRetrieve',array('query' => array('fileId'=> $form[$key]['FileID']['#value'],'projectID'=> $pidobtained))));
0 голосов
/ 02 января 2012

Вы можете установить модуль "devel".Он показывает вам доступные массивы и их значения на странице, на которой вы находитесь.Используя этот модуль, вы можете щелкать по массиву так же, как щелкать по структуре CSS / HTML с помощью Firebug.Вы могли бы по крайней мере проверить, находится ли искомое значение где-нибудь в существующем массиве.

Также при загрузке страницы попробуйте вывести массив, используя

echo '<pre>';
var_dump($content);

.значение где-то в этом массиве

...