2014-02-26 82 views
2

我已經中config.ymlSymfony2:如何用全局的Twig變量替換某個字符串?

twig: 
    globals: 
     locale_list_sg: Singapore 
     locale_list_cn: China 

在我的樹枝模板下面,我會想基於一個參數來獲取值「Singpaore」和「中國」。 因此,我將它們連接起來這樣並顯示:

{{'locale_list_' ~ countryId}} 

但是,上述將顯示locale_list_sg而不是進入config.yml和提取值。

+1

你不應該混用camelCase和under_score變量名。堅持一種代碼風格。 Twig默認使用下劃線變量名稱。 – nifr

回答

5

使用更簡單的方法:

config.yml

twig: 
    globals: 
     locale_list: 
      sg: Singapore 
      cn: China 

模板:

{{ locale_list[country_id] }} 
+0

我喜歡這個答案。只是有一個問題,爲什麼「sg」和「cn」之前有一個「 - 」? –

+2

它在YAML中定義了一個[關聯數組](http://en.wikipedia.org/wiki/YAML#Lists_of_associative_arrays)的數組。 – nifr

+1

@nifr難道不等於' - {sg:Singapore}'?這意味着'locale_list [country_id]'不起作用,因爲索引是'0'而不是'sg'。 –

0

據我所知,Twig會將字符串解釋爲字符串;它並不能夠確定變量變量...它不漂亮,但解決方法(假設你有一組有限的配置選項你不介意重新鍵入:

{{ 
    ('locale_list_' ~ countryId)|replace({ 
     'locale_list_sg': locale_list_sg, 
     'locale_list_cn': locale_list_cn 
    }) 
}} 

希望幫助