2013-08-24 21 views
0

我使用循環來顯示具有其屬性「地點」等於2的圖像。所以我做了以下操作。TWIG - 如何顯示沒有循環的特定屬性的項目

{% for image in entity.images %} 
    {% if image.place == 2 %} 
     ...           
    {% endif %} 
{% endfor %} 

這是一個相當耗時的過程。所以我希望能夠直接找到這個項目。例如,要獲得具有屬性「地點」等於2的圖像,我很想擁有類似{{ entity.images|image.place[2] }}的東西。不幸的是,這是行不通的。希望有人能幫忙。先謝謝你。乾杯。馬克

回答

2

不,沒有銀子彈做這樣的事情,即使你想添加一個getImageByFilter()方法到你的實體,你需要迭代通過圖像集合來獲得正確的。

同樣使用樹枝助手(我不推薦)。

請記住,如果您試圖從與主實體相關的集合中獲取給定實體,則需要查看集合以查找適合您約束的集合。

更新,

另外,還要看看twig for loop documentation,可能可以幫助你跳過遍歷整個集合迭代的Adding a condition例子。

正如this Github Twig Repository issue中所解釋的,不可能在循環中斷開或繼續。

從文檔,

不像在PHP中,這是不可能的中斷或繼續在循環中。但是,您可以在迭代過程中過濾序列,從而允許您跳過項目。下面的示例跳過所有其不是活躍的用戶:

<ul> 
    {% for element in entity.elements if element.isOk %} 
     <li>{{ element.attribute }}</li> 
    {% endfor %} 
</ul> 

的優點在於,專用循環變量將計數正確因此不計算不遍歷用戶。請記住,使用循環條件時不會定義像loop.last這樣的屬性。

+0

感謝您的回覆艾哈邁德。你知道順便說一下,如果我找到該物品時可以退出環路嗎? – Marc

+0

不,這是不可能的(根據文件),檢查我的更新(我編輯我的答案)。 –

+0

梅西艾哈邁德幫助我走出困境。我會等一會兒,以防有人進入另一個黑客行列。如果沒有,我會接受你的答案。再次感謝 :) – Marc

相關問題