2012-10-29 77 views
1

我有一個二維數組(如果我把它算在corectlly中),稱爲$ all_items。它包含幾個數組,每個類別的項目都有一個數組,每個數組都包含一個項目 - 包括類別,說明等等。這是到目前爲止我的代碼:如何在Twig中只獲得多維數組中的一個特定元素

{% for all_i in all_items %} 
     <table class="table table-condensed"> 
     {% for i in all_i %} 
      <tr> 
       <td>{{ loop.index }}. </td> 
       <td>{{ i.description }}</td> 
       <td>{{ i.price }}</td> 
      </tr> 
     {% endfor %} 
     </table> 
    {% endfor %} 

我想是爲了顯示每個類別的名稱,然後這一類的項目。我只能打電話給{{ i.category }},但它會顯示每個項目,不僅一次。

我想知道是否有辦法做下面這樣的事情,以及這是正確的語法。

{% for all_i in all_items %} 
     <table class="table table-condensed"> 
     {{ all_i[i].category }} 
     {% for i in all_i %} 
      <tr> 
       <td>{{ loop.index }}. </td> 
       <td>{{ i.description }}</td> 
       <td>{{ i.price }}</td> 
      </tr> 
     {% endfor %} 
     i++; 
     </table> 
    {% endfor %} 

i的值被設定爲從所述控制器0並且被傳遞給模板。

我得到的錯誤是Key "0" for array with keys "" does not exist

這條線在控制器正常工作:

$i = $all_items[0][0]->getCategory(); 

能否請你幫我解決這個問題?


UPDATE

%array% [[!!php/object:O:29:"EM\ExpensesBundle\Entity\Item":7:{s:5:"*id";i:8;s:14:"*description";s:8:"Вода";s:8:"*price";s:4:"5.00";s:7:"*date";O:8:"DateTime":3:{s:4:"date";s:19:"2007-01-01 00:00:00";s:13:"timezone_type";i:3;s:8:"timezone";s:13:"Europe/Berlin";}s:8:"*notes";N;s:11:"*category";O:48:"Proxies\__CG__\EM\ExpensesBundle\Entity\Category":4:{s:17:"__isInitialized__";b:1;s:5:"*id";i:1;s:7:"*name";s:28:"Храна и напитки";s:8:"*items";O:33:"Doctrine\ORM\PersistentCollection":2:{s:39:"Doctrine\ORM\PersistentCollectioncoll";O:43:"Doctrine\Common\Collections\ArrayCollection":1:{s:54:"Doctrine\Common\Collections\ArrayCollection_elements";a:0:{}}s:46:"Doctrine\ORM\PersistentCollectioninitialized";b:0;}}s:8:"*month";O:45:"Proxies\__CG__\EM\ExpensesBundle\Entity\Month":7:{s:17:"__isInitialized__";b:0;s:5:"*id";N;s:7:"*name";N;s:9:"*budget";N;s:8:"*notes";N;s:10:"*spended";N;s:8:"*saved";N;}}, !!php/object:O:29:"EM\ExpensesBundle\Entity\Item":7:{s:5:"*id";i:9;s:14:"*description";s:14:

這是當我寫

`{{all_items是我所得到的一部分| yaml_dump}}

但我仍然找不出要使用的索引。老實說,我不知道如何理解這一點。

+1

您可以使用'dump'或'var_dump'樹枝過濾器(取決於您使用的Twig的版本),並查看哪些索引在數組內。可能是,你真的引用了不存在的元素,因爲語法似乎是正確的。檢查[手冊](http://twig.sensiolabs.org/doc/functions/dump.html) –

+0

謝謝!只有yaml_dump工作,但我無法弄清楚究竟是什麼意思。轉儲..花了太久:S – Faery

回答

1

我假設all_i數組中的所有項都具有相同的類別?如果是這樣,並且該數組不是一個已命名的鍵值數組,那麼您可以執行類似於下面的操作來獲取子數組中的第一個類別名稱。

{% for all_i in all_items %} 
    {% if all_i|length > 0 %} 
     <h3>{{ all_i[0].category }}</h3> 
     <table class="table table-condensed"> 
      {% for i in all_i %} 
       <tr> 
        <td>{{ loop.index }}. </td> 
        <td>{{ i.description }}</td> 
        <td>{{ i.price }}</td> 
       </tr> 
      {% endfor %} 
     </table> 
    {% endif %} 
{% endfor %} 
相關問題