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

时间:2017-05-04 23:28:50

标签: variables drupal replace twig

从表格

的php移交数组
$repl_arr = array('serach-string1' => 'replace1', ...) 

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

{{ block | replace({ repl_arr }) }}

这不起作用,也不像

这样的变量循环
{% for key,item in repla_arr %}
  {% set var = block | replace({ key : item }) %}
{% endfor %}

一样。这有什么问题?怎么会有用?

1 个答案:

答案 0 :(得分: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 }}

fiddle