Twig 字符串中的细枝变量

Twig 字符串中的细枝变量,twig,Twig,首先,我没有能力创建某种自定义函数。我的问题需要用Twig的前端选项来解决。是的,我对小树枝很陌生:) 我正在尝试向javascript变量添加一些细枝变量。该javascript变量用于将文本翻译成不同的语言 最终结果必须是: var ajaxTranslations = {{ 'Free shipping; In stock; Natural; Juice;' | t_json | raw }}; // so Natural and Juice need to added in the e

首先,我没有能力创建某种自定义函数。我的问题需要用Twig的前端选项来解决。是的,我对小树枝很陌生:)

我正在尝试向javascript变量添加一些细枝变量。该javascript变量用于将文本翻译成不同的语言

最终结果必须是:

var ajaxTranslations = {{ 'Free shipping; In stock; Natural; Juice;' | t_json | raw }}; 
// so Natural and Juice need to added in the exact same way as above
我有一个Twig变量,其中有一些文本,如下所示:

{{ product_usp }} // results in -> Natural, Juice
首先,我想把这个字符串(在每个逗号后面)分成两个独立的值。 接下来,我想用这些值创建一个数组,并将它们添加到javascript变量中。这就是我的问题开始的地方

如何向该javascript变量添加
tusp

我所做的是:

 {% set tusp = [] %}
  {% set usps = theme.product_usp | split(',') %}

  {% for usp in usps %}
   {% set tusp = usp ~ ';' %}
  {% endfor %}

<script>
    var ajaxTranslations = {{ 'Free shipping; In stock; ~ tusp' | t_json | raw }};
<script>
{%set tusp=[]%}
{%set usps=theme.product_usp | split(',')%}
{usp%中的usp为%usp%}
{%set tusp=usp~';'%}
{%endfor%}
var ajaxTranslations={{'免费送货;库存;~tusp'|t|u json | raw};
这将导致空值或将
~tusp
视为文本而不是值


非常感谢您的帮助。

当您使用tilde运算符时,它必须位于字符串和/或变量之间:


var ajaxTranslations=“{{”免费送货;库存;'~tusp|raw}}”;
或者您可以使用“字符串插值”:


var ajaxTranslations=“{{”免费送货;库存;#{tusp}”|raw}”;

什么是
t\u json
?这是自定义筛选器吗?@AlvinBunk可能是,但
tusp
变量未正确连接或插值。如果您发现此答案有用,请投票支持下面的答案,谢谢!请注意,您需要将语句包装在paranethes中,否则过滤器
t_json
将仅应用于变量
tusp
@Michael Nino;这两种选择我都试过了。这两个函数都给出了这样的结果:
{“
#(tusp}
。您知道这是为什么吗?如果您想为JavaScript变量分配一个字符串,您可以执行以下操作:
var ajaxTranslations=“{'Free shipping;In stock;”~tusp|raw}";
相反。我认为您不需要使用过滤器,例如t_json。我假设此过滤器是您自己定义的自定义过滤器。以下是编码为json的细枝文档:请参阅。您不需要使用json_编码,因为您正在为JavaScript变量分配字符串值。但是,您应该阅读文档n如果您对将数组分配给JavaScript变量感兴趣。
<script>
    var ajaxTranslations = "{{ 'Free shipping; In stock; ' ~ tusp | raw }}";
<script>
<script>
    var ajaxTranslations = "{{ "Free shipping; In stock; #{tusp}" | raw }}";
<script>