由于参数在drupal_render中,因此无法使用l()传递参数

时间:2012-01-02 11:21:35

标签: php drupal-6 hyperlink

这是我的代码:

 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' . 

现在,当我尝试使用

从subsequesnt函数获取此URL的值时
   <?php
    $fileIdbtained = $_GET['fileId[data]'] ;
    $pidobtained = $_GET['projectID'] ;
    ?>

我获取了projectID的值,但没有获取fileID的值。这是访问参数的正确方法吗? 想得到你的意见。

由于 甲

2 个答案:

答案 0 :(得分:0)

您可以安装模块“devel”。它会显示您所在页面上的可用数组和值。使用此模块,您可以单击数组,就像使用Firebug单击CSS / HTML结构一样。您至少可以检查您要查找的值是否在现有数组中的某个位置。

同样在加载页面时,尝试使用

输出数组
echo '<pre>';
var_dump($content);

查看该值是否在该数组中的某个位置

答案 1 :(得分:0)

要明确:在您的foreach循环中,$form[$key]['FileID']FAPI element

换句话说:在循环的每次迭代中,变量$form[$key]['FileID'](以及$form[$key]['Filename']和其他变量)都是具有特定结构的PHP array

这个“特定结构”是drupal_render()所期望的结构,因此它知道如何“渲染”元素(即生成一串HTML)。

现在,对于你想要获得$form[$key]['FileID']没有HTML,第一的实际语义值(即157960)的情况,你显然必须停止传递它{{3 }}

然后,由于$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))));