2015-04-28 47 views
0

我想在Drupal 7模塊中創建一個統計頁面。但爲此,我實際上需要在array內部做一個foreach ..我認爲這是不可能的,但我不能100%確定這一點。在drupal數組中使用foreach?

這是我的代碼目前(不工作,級聯錯誤等)

有誰知道這是可能的,可以給一個小例子如何做到這一點

我的代碼:

$id = $_GET['id']; 

$query = db_query('SELECT * FROM push_notifications_messages WHERE app_id = :app_id', array(':app_id' => $id)); 
$qCount = db_query('SELECT * FROM push_notifications_messages WHERE app_id = :app_id', array(':app_id' => $id))->rowCount(); 

$form['table'] = array(
'#theme' => 'table', 
'#header' => array(t('Message'), t('Device'), t('Date')), 
'#rows' => array(
    foreach($query as $result) { 
     for($i = 1; $i <= $qCount; $i++) { 
     echo "'r" . $i . "'" . => array(
      "'c1'" . => array(
       '#type' => 'textfield', 
       '#title' => t('@message', array('@message' => $result['msg_message'])) 
      ), 
      "'c2'" . => array(
       '#type' => 'textfield', 
       '#title' => t('@device', array('@device' => $result['msg_device'])) 
      ), 
     ), 
     } 
    } 
), 
); 

在此先感謝!

回答

1

只需提取你的foreach循環出數組的定義,然後後分配值是這樣的:

<?php 

    $form['table'] = array(
     '#theme' => 'table', 
     '#header' => array(t('Message'), t('Device'), t('Date')), 
     '#rows' => array(), 
    ); 



    foreach($query as $result) { 
     for($i = 1; $i <= $qCount; $i++) { 
     $form['table']["#rows"]["'r$i'"] = array(
      "'c1'" => array(
       '#type' => 'textfield', 
       '#title' => t('@message', array('@message' => $result['msg_message'])) 
      ), 
      "'c2'" => array(
       '#type' => 'textfield', 
       '#title' => t('@device', array('@device' => $result['msg_device'])) 
      ), 
     ); 
     } 
    } 

?> 
+0

謝謝!目前爲止,這隻能在表格中不顯示「標題」。我也嘗試添加一些hardcored字符串,並嘗試#markup而不是#title,但它顯示空的結果。 – user3428971

+0

@ user3428971你的意思是什麼*不顯示*你只是分配一個新的元素到一個數組。所以你什麼都看不到。也許會這樣:'print_r($ form);'查看數組的結構。 – Rizier123

+0

我的意思是在顯示錶格的頁面上它現在看起來像這樣:http://i57.tinypic.com/dp8mkx.jpg。雖然它應該顯示#title => t('文本這裏')對嗎? – user3428971

0

你不應該使用回聲,的foreach樣的PHP代碼的形式Drupal的代碼生成器內。沒有給出任何評論,我想與你分享this。希望它能比你更好地幫助你。