Twig:用 include 替换字符串中的占位符

Twig: Replace placeholder in string with include

我的问题与这个类似:Twig: replace arbitrary token in variable with template include
我希望自从被问到后情况有所改变。

我正在与 twig.js 合作。

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

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

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

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

See twigfiddle.

是否有可能扩展 twig.js 以实现类似的功能?

分两步完成,先把partial抓到一个变量里,然后用变量代替placeholder,例如

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

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

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

demo

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