2013-07-11 70 views
0

我是Twig和Symfony2(以及PHP)的新手。我目前有一組對象,我可以通過在{for result in result}語句後面{{result.attribute1}}來訪問屬性。TWIG - 變量== objectattribute

我想用變量{{var | removePath}}(其中removePath是我在Twig中創建的擴展),並使用它遍歷結果數組。我想要做的是返回行if {{var| removePath}} == result.attribute1

這是可能在枝條做?如果是這樣,我該如何解決這個問題?我已經嘗試過類似於下面的代碼,但執行了「else」語句(表示沒有匹配)。我也試過var == result.attribute,但是這也不起作用。

{% for result in results %} 
{% if var|removePath in result.attribute1 %} 
    {{ var | removePath }} exists. 
{% else %} 
    {{ var | removePath }} doesn't exist in array. 
{% endif %}{% endfor %} 

因此,我認爲我有2個問題;

1)是否有可能在理解(如果是這樣,怎麼)

2)是否有更簡單/更好的方式來獲得整個行(對象數組還包含屬性2,3 & 4,和我想回到那些在共同與屬性1(如果它匹配VAR))

See schema of my array最近添加

預先感謝您的幫助!我希望我的問題是可以理解的:S

回答

0

用括號括起來。

使用(var|removePath)它們組成一個表達式。

例如:

{% if (1+1) == 2 %} 

而且可以使用attribute()函數來訪問屬性和對象/陣列的方法。

{{ attribute(object, method) }} 
{{ attribute(object, method, arguments) }} 
{{ attribute(array, item) }} 

attribute chapter在枝條文檔中。

使用三元運算符這樣進一步縮短模板代碼:

{% set strippedVar = var|removePath %} 
{{ strippedVar }}{{ (strippedVar in result.attribute1) ? 'exists' : 'does not exist' }}. 

設置過濾變量來多次執行該濾波器另一個防止。

+0

不幸的是,這並沒有爲我工作。我仍然在頁面上打印「不存在陣列」。 –

+0

你的var變量是什麼?並且是持有對象的數組的數組鍵的「屬性」? 'var | removePath'的結果是什麼類型? – nifr

+0

謝謝您的建議!我嘗試過三元運算符,並且它可以工作(沒有錯誤信息),但「不存在」仍然顯示出來(因此仍然不匹配)。我已經顯示了兩個var | removePath並且打印了所有的result.attribute1,並且我看到有相同的匹配。不知道爲什麼它沒有看到它:S –