Twig中的撇号转换为& # 039;

8

这个问题之前在这里已经被问过:

问题

但是它没有解决我的问题。

当我从数据库中获取带有撇号的数据后,我使用以下方式将其放入文本输入框中:

c_name='{{company_name}}';
$("#company_name").val(c_name);

这段文字的意思是:

有些孵化场和虾养殖公司名称被显示为“some Hatchery & Shrimp & #039;s Culture ltd.”

因此,我采用了该问题的解决方案,如下:

c_name='{{company_name|raw}}';
$("#company_name").val(c_name);

我遇到了一个错误,类似于:

SyntaxError: missing ; before statement 
c_name='some Hatchery & Shrimp's Culture ltd.';

在“Shrimp”后面、s之前出现了错误。 显然,字符串在实际结束之前就已经结束,并且期望有一个分号。

所以我再次尝试了一下:

c_name={{company_name|raw}};

SyntaxError: missing ; before statement
c_name=some Hatchery & Shrimp's Culture ltd.;

现在出现错误,仅在第一个空格之后显示,例如在'H'之前。

我的问题是如何在Twig中处理撇号? '|raw'对我造成了问题。


1
你尝试过在你的js代码中使用双引号替换单引号吗?看起来可能会有所帮助。 - Darmen Amanbay
1
你是指这个 c_name="{{company_name|raw}}"; 吗?还是指替换函数?两者都没用。第一个在动态字符串包含任何双引号时将无法工作,而第二个在字符串中有超过一个撇号(如2/3个撇号)时也无法工作。@DarmenAmanbayev - AtanuCSE
1个回答

17
c_name = '{{ company_name|e('js')|raw }}';

由于您在Javascript环境中,因此需要进行Javascript转义(然后添加raw以避免HTML的自动转义)。


3
不需要使用原始过滤器,因为它不会再次被转义,所以没有什么需要避免的。另外值得一提的是 eescape 过滤器的简称。 - Maerlyn
2
@Maerlyn,文档中有不同的说法:当使用自动转义时,Twig 尝试在自动转义策略与 escape 过滤器应用的策略相同时不对变量进行双重转义(已加粗)- http://twig.sensiolabs.org/doc/filters/escape.html - deceze
1
我以前从未遇到过这样的问题,但显然我可能会遇到。谢谢你提供的信息! - Maerlyn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接