Twig(Symfony2) - 替换函数 - 从变量中替换 - 是否可能?(部分完成的代码)

use*_*356 2 symfony twig

我很接近,但似乎没有任何效果:

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

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

{{ "test_abc123_xyz"|replace({ '{{ a }}{{ b }}': '' }) }}
Run Code Online (Sandbox Code Playgroud)

应该明白我正在尝试做什么,因为我认为上面唯一的错误是这一点:

'{{ a }}{{ b }}'
Run Code Online (Sandbox Code Playgroud)

...但我无法正确使用(我想将a和b的值一起使用并替换它).

如果工作,上面的结果将是:

test__xyz
Run Code Online (Sandbox Code Playgroud)

Adr*_*ult 6

当你使用时'{{ a }}{{ b }}',它只是一个简单的树枝串:

{{ '{{ a }}{{ b }}' }}
Run Code Online (Sandbox Code Playgroud)

只会输出:

{{ a }}{{ b }}
Run Code Online (Sandbox Code Playgroud)

然后,如果要将表达式用作树枝中的,则需要将它们放在括号中:

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

{% for key, value in hash %}
    {{ key }} => {{ value }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

输出:

Adrien => hello
name => hi
Run Code Online (Sandbox Code Playgroud)

所以你修复的解决方案是:

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

{{ "test_abc123_xyz"|replace({ (a ~ b): '' }) }}
Run Code Online (Sandbox Code Playgroud)

~是树枝中的连接运算符.