【问题标题】:How to use variables in Twig filter 'replace'如何在 Twig 过滤器“替换”中使用变量
【发布时间】:2017-10-03 07:18:39
【问题描述】:

从表单的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 %}

确实如此。它有什么问题?它怎么可能起作用?

【问题讨论】:

  • 你能给我一个例子(只是一个很好的例子)你的block变量是什么样的,然后我应该有一个解决方案。
  • DarkBee 的回答很好地描述了用哈希(数组)替换过滤器的用法。 @alvin-bunk 第二点确实是变量“块”。它是一个渲染数组(我没有想到)。所以替换不适用于它。当我做 {% set output %} {{ block }} {% endset %} {{ output | replace(replaces) }} 然后 html 字符被转义,例如
  • 好像找到了,输出为 {% autoescape false %} ... {% endautoescape %}

标签: variables drupal replace twig


【解决方案1】:

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

但在循环替换时,您需要将 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多