2013-08-25 47 views
2

我很接近,但似乎没有任何工作:Twig(Symfony2) - 替换函数 - 替换变量 - 有可能吗? (部分完成的代码)

{% set a %}abc{% endset %} 

{% set b %}123{% endset %} 

{{ "test_abc123_xyz"|replace({ '{{ a }}{{ b }}': '' }) }} 

很明显我想要做的,因为我认为上面唯一的部分是错的是这一点:

'{{ a }}{{ b }}' 

......但我不能把它弄清楚(我想一起使用a和b的值并替换它)。

以上,如果工作会是这个结果:

test__xyz 

回答

6

当您使用'{{ a }}{{ b }}',它只不过是一个简单的字符串小枝:

{{ '{{ a }}{{ b }}' }} 

只想输出:

{{ a }}{{ b }} 

然后,如果你想在树枝用expression as keys,你需要把它们放在括号:

{% set name = 'Adrien' %} 
{% set hash = {(name): 'hello', name: 'hi'} %} 

{% for key, value in hash %} 
    {{ key }} => {{ value }} 
{% endfor %} 

将输出:

Adrien => hello 
name => hi 

所以你固定的解决方案是:

{% set a %}abc{% endset %} 
{% set b %}123{% endset %} 

{{ "test_abc123_xyz"|replace({ (a ~ b): '' }) }} 

~是枝条中的concatenation operator