twig - 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" %}'}) %}
有没有可能扩展 twig.js 来做这样的事情?
解决方案
您必须分两步完成,首先在变量中捕获部分,然后使用变量替换占位符,例如
{%- set bar -%}
{% include "partial.twig" %}
{%- endset -%}
{% set foo = 'this is {foo}' %}
{% set foo = foo|replace({'{foo}': bar }) %}
{{ foo }}
注意: {%- ... -%}
用于去除空格