首页 > 解决方案 > Twig:用包含替换字符串中的占位符

问题描述

我的问题与此类似:Twig: replace absolute token in variable with template include
我希望事情在被问到之后有所改变。

我正在使用twig.js

我有一个服务器,它的任务是监听请求、接收数据、使用这些数据编译一个 twig 文件并发回 html。
它接收的数据是一个包含文本、颜色等的对象,它们作为上下文传递给 twig 文件。

在数据中,用户可以发送占位符{foo},我想将这些占位符替换为{% include 'partial.twig' %}.

我的第一次尝试是使用过滤器|replace,但它没有得到处理:

{% set foo = foo|replace({'{foo}': '{% include "partial.twig" %}'}) %}

见 twigfiddle

有没有可能扩展 twig.js 来做这样的事情?

标签: twigtwig.js

解决方案


您必须分两步完成,首先在变量中捕获部分,然后使用变量替换占位符,例如

{%- set bar -%}
    {% include "partial.twig" %}
{%- endset -%}

{% set foo = 'this is {foo}' %}

{% set foo = foo|replace({'{foo}': bar }) %}
{{ foo }}

演示

注意: {%- ... -%} 用于去除空格


推荐阅读