2015-09-07 88 views
1

我想從php轉發(呈現)我的數組到樹枝模板並打印出模板中的所有東西。 我的問題是訪問樹枝模板中的數組。將一個php數組轉發到樹枝模板(Symfony)

PHP數組和渲染功能:

while ($row = mysqli_fetch_array ($queryResult)) 
    { 
     $tplArray = array (
       array (
         'id' => $row ['id'] 
       ), 
       array (
         'name' => $row ['name'] 
       ) 
     ); 

     $tplArray = array (
       'id' => $row ['id'], 
       'name' => $row ['name'] 
     ); 
    } 

    return $this->render ('work/work.html.twig', array (
      'data' => $tplArray 
    )); 

嘗試訪問數組中的樹枝模板:

{% for entry in data %} 
     {{ entry.id }} 
     {{ entry.name }} 
    {% endfor %} 

這顯然不起作用。 如何從我的$ tplArray中獲取數據(id,name)並將其打印出模板?

回答

2

while循環應該是這樣的:

$tplArray = array(); 
while ($row = mysqli_fetch_array ($queryResult)) 
{ 
    $tplArray[] = array (
     'id' => $row ['id'], 
     'name' => $row ['name'] 
    ); 
} 

有了這個代碼,您分配一個空數組(作爲預防措施),以$tplArray第一。然後,使用[]運算符,在每個步驟while處將一個新元素(具有「id」和「name」屬性的關聯數組)循環到此結果數組中。

目前,您將數組重新分配爲$tplArray而不是while的每個步驟的值。

+1

考慮將你的第一個tplArray重命名爲類似$行的東西,然後有$ tplArray = ['data'=> $ rows];對兩個完全不同的數組使用相同的名稱會使事情比他們需要的更混亂。此外,$ rows = mysqli_fetch_all($ queryResult)將完全消除你的第一個循環。 – Cerad

+0

完美謝謝! – user3924331