如何在twig文件中使用php json_encode选项和json_encode twig函数

adi*_*tya 32 php symfony twig

我正在尝试使用twig json_encode函数,但是当我这样做时

    var packageDetails =  {{(packageDetails|json_encode)}};
Run Code Online (Sandbox Code Playgroud)

和packageDetails是从控制器传递的数组数组

它给了我错误的说法

    invalid property id 
Run Code Online (Sandbox Code Playgroud)

因为" 我想使用转义过滤器; 我该如何使用它?

Mik*_*ike 52

这只是因为你没有用引号包装你的输出吗?

var variable = '{{{reference}}}';
Run Code Online (Sandbox Code Playgroud)

更新:

解决问题的实际答案是根据评论添加标签

var packageDetails =  {{(packageDetails|json_encode|raw)}};
Run Code Online (Sandbox Code Playgroud)

  • 你试过放| 在json_encode之后生成 (27认同)
  • 如果你的字符串包含'符号,JS将会中断.使用"escape('js')"树枝过滤器来避免这种情况.所以,我建议:var variable ='{{reference | json_encode | 逃避('js')| 生的}}'; (6认同)

Tac*_*sky 42

您可以通过以下方式添加选项:

{{ data|json_encode(constant('JSON_PRETTY_PRINT'))|raw }}
Run Code Online (Sandbox Code Playgroud)

添加这个是因为它回答了标题中的问题,但听起来原始过滤器确实是您正在寻找的.其他人可能会觉得这很有用.

  • @Frank6:取决于`data`的来源; 如果它来自您自己的数据库查询或类似,它是非常安全的.如果它来自用户输入,那么它应该在传递给Twig视图之前进行清理 (2认同)