如何在Twig过滤器'replace'中使用变量

drm*_*ind 5 variables replace drupal twig

从形式的PHP移交数组

$repl_arr = array('serach-string1' => 'replace1', ...) 
Run Code Online (Sandbox Code Playgroud)

到Twig模板我想替换每个替换过滤器的Twig变量中的字符串,类似于:

{{ block | replace({ repl_arr }) }}
Run Code Online (Sandbox Code Playgroud)

这不起作用,也不像变量循环

{% for key,item in repla_arr %}
  {% set var = block | replace({ key : item }) %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

确实.这有什么问题?怎么会有用?

Dar*_*Bee 5

要么传递整个数组,要么循环替换.

但是当循环替换时,你需要包装keyvalue在括号中强制插入那些

{% set replaces = {
    '{site}'     : '{stackoverflow}',
    '{date}'  : "NOW"|date('d-m-Y'),
} %}

{% set haystack = '{site} foobar {site} {date} bar' %}


{{ haystack | replace(replaces) }}

{% set output = haystack %}
{% for key, value in replaces %}
    {% set output = output|replace({(key) : (value),}) %}
{% endfor %} 
{{ output }}
Run Code Online (Sandbox Code Playgroud)

小提琴