我正在开发一个基于 twig patternlab 框架的项目。我的大部分内容都使用 JSON 文件,尤其是页面。
我想将一个链接(由原子构建)集成到我从我的 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>
这是我的结果(都转储了最终的 html.
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 }.
选项 A 完美地工作,当我使用带有字符串的 twig set 时,插值开始并且一切都正确输出。但这就是我的模板代码中的一个字符串......这不是我想要的。
选项 B 是我第一次尝试使用 JSON 文件中的字符串,但是当我使用 var 和字符串作为集合时,插值不起作用。我尝试了多种变体 |raw 并且不确定还有什么,但结果是总是一样。
选项 C 也不起作用。使用 twig set 和 include 作为一个块将其转换为 twig 标记代码,从我最近的经验来看,这几乎不能用于任何事情。我还是想试试看。
有没有办法让插值工作,或者是否有一个很好的选择与 twig/patternlab 来获得我想要实现的目标?