2014-06-08 105 views
3

我有以下幾點:嫩枝 - 插值變數

{% if promo.monday_unavailable == 1 %} 
    not available mondays 
{% elseif promo.monday_available == 1%} 
    available mondays 
{% else %} 
    available mondays from {{promo.monday_start}} until {{promo.monday_end}} 
{% endif %} 
<br /> 
{% if promo.tuesday_unavailable == 1 %} 
    not available tuesdays 
{% elseif promo.tuesday_available == 1%} 
    available tuesdays 
{% else %} 
    available tuesdays from {{promo.tuesday_start}} until {{promo.tuesday_end}} 
{% endif %} 
<br /> 

...

,我想爲一週的每一天做。

我不知道是否有一種方法,我可以簡化代碼讀取

{% for i in ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'] %} 

{% if promo.~i~"_unavailable" == 1 %} 
    not available mondays 
{% elseif promo.~i~"_available" == 1%} 
    available mondays 
{% else %} 
    available mondays from {{promo.~i~"_start"}} until {{promo.~i~"_end"}} 
{% endif %} 
<br /> 

{% endfor %} 

隨着枝條。

任何幫助,將不勝感激。我不知道要搜索哪些關鍵字。

回答

4

通過在鍵盤上混合我的額頭找到答案。

而不是

{% if promo.~i~"_unavailable" == 1 %} 

使用

{% promo[i~"_unavailable"] == 1 %) 
+0

我會補充說,如果'promo'是一個對象必須實現'ArrayAccess'接口(至少對於Twig版本1.16)。並且看起來,Twig將在使用getter之前使用接口實現來訪問對象屬性,如Twig文檔中所述[here](http://twig.sensiolabs.org/doc/templates.html#variables) –

+1

您也可以使用如[Twig文檔](http://twig.sensiolabs.org/doc/templates.html#string-interpolation)(版本1.16)中所述,字符串插值功能'promo [「#{i} _unavailable]]' –

6

我知道這是一個古老的線程,但樹枝支持內置插值像支持:

{{i18n("language_#{langId}")}} 

重要的是字符串插值是用雙引號。