Twig Patternlab/细枝变量插值不';无法使用json中的字符串

Twig Patternlab/细枝变量插值不';无法使用json中的字符串,twig,string-interpolation,patternlab.io,Twig,String Interpolation,Patternlab.io,我正在做一个基于twig patternlab框架的项目。我的大部分内容都使用JSON文件,尤其是页面 我想将一个链接(由atom构建)集成到我从JSON文件获得的文本中,该文件中有一个用于链接的占位符。我正在处理来自多语言cms的文本,因此在文本内容中添加占位符是保持其灵活性的最简单方法 这是我的json文件的摘录 { "legal" : "Mit dem Absenden des Formulars akzeptieren Sie unsere #{ legalLink }.",

我正在做一个基于twig patternlab框架的项目。我的大部分内容都使用JSON文件,尤其是页面

我想将一个链接(由atom构建)集成到我从JSON文件获得的文本中,该文件中有一个用于链接的占位符。我正在处理来自多语言cms的文本,因此在文本内容中添加占位符是保持其灵活性的最简单方法

这是我的json文件的摘录

{
    "legal" : "Mit dem Absenden des Formulars akzeptieren Sie unsere #{ legalLink }.",
    "deeplink" : {
        "label" : "Datenschutzbedingungen",
        "url" : "#AGB_link"
    }
}
这是我的小树枝模板

{# __ build the link __ #}
{% set legalLink %}
    {% include "atoms-link" with contact.deeplink %}
{% endset %}

{# __ set up the string with interpolation placeholder __ #}
{% set legalText_a = "Mit dem Absenden des Formulars akzeptieren Sie unsere #{ legalLink }." %}
{% set legalText_b = contact.legal %}
{% set legalText_c %}
    {% include contact.legal %}
{% endset %}

{# __ dump to check/debug how it comes out __ #}
{{ dump (legalText_a) }}<hr>
{{ dump (legalText_b) }}<hr>
{{ dump (legalText_c) }}<hr>

{# __ output the result __ #}
<p>A) {{ legalText_a|raw }}</p>
<p>B) {{ legalText_b|raw }}</p>
<p>C) {{ legalText_c|raw }}</p>
选项A工作得很好,当我使用细枝集和字符串时,插值开始,所有输出都正确。但在我的模板代码中有一个字符串。。。那不是我想要的

选项B是我第一次尝试使用JSON文件中的字符串,但当我将var与字符串一起用于集合时,插值不会生效。我用| raw尝试了多种变化,但不确定还有什么变化,但结果总是一样的

选项C也不起作用。使用带有include的twig集作为块将其转换为twig标记代码,而根据我最近的经验,这几乎不能用于任何事情。我还是想试试看


有没有办法让插值工作,或者有没有一个很好的替代品可以使用twig/patternlab来实现我想要实现的目标?

要解决这个问题,您首先需要启用扩展
twig\u extension\u StringLoader
。这使您可以访问该函数,该函数使您能够在
twig
中“创建”模板,并(重新)启用所需的字符串插值

寄存器扩展

$twig->addExtension(新的twig_扩展_StringLoader())

使用字符串中的
template\u
以达到所需效果


谢谢你的评论。我将尝试在一个常规项目中进行asapI测试,但是对于我的模式实验室,我似乎找不到合适的地方来注册扩展。关于这个话题有什么想法吗@如果你找到了这个文件,你应该可以知道我还没有安装细枝扩展插件。我刚刚运行了“composer Required pattern lab/plugin twig extensions”,我正在测试是否一切都像预期的那样工作。包操作:17次安装对于一个插件来说是相当多的。你只需要找到
twig
实例就可以注册一个插件
string(121) "Mit dem Absenden des Formulars akzeptieren Sie unsere Datenschutzbedingungen ."
string(69) "Mit dem Absenden des Formulars akzeptieren Sie unsere #{ legalLink }."
object(Twig_Markup)#2627 (2) { ["content":protected]=> string(78) " Mit dem Absenden des Formulars akzeptieren Sie unsere #{ legalLink }.   " ["charset":protected]=> string(5) "UTF-8" }

A) Mit dem Absenden des Formulars akzeptieren Sie unsere Datenschutzbedingungen.
B) Mit dem Absenden des Formulars akzeptieren Sie unsere #{ legalLink }.
C) Mit dem Absenden des Formulars akzeptieren Sie unsere #{ legalLink }.
{% set legalLink = 'Datenschutzbedingungen' %}
{{ include(template_from_string('{{ "'~contact.legal~'" }}')) }}