如何将Twig数组转换为JavaScript数组

11

我有一个Twig数组,我想将它发送到JavaScript:

<script>
    var packages = {{packages}}
</script>

错误!将数组转换为字符串。

我该怎么办?


1
你能详细说明一下吗?你的问题不够清晰。 - Yashwardhan Pauranik
谢谢 @DarkBee,它正在运行。 - ehsan
4个回答

31

我有一个来自Twig的数组,名为filters,这一行代码解决了问题

const filters = JSON.parse('{{ filters | json_encode | raw }}');

我不得不在函数参数中使用反引号(`)而不是单引号,因为JSON值中有一个单引号(实质上是撇号)。 - SteveExdia

14
你可以使用 json_encode Twig 过滤器将数组传递到 JavaScript 中: Twig
{% set packages = [1, 2, 3, 4] %}

<script>
    var packages = {{ packages|json_encode }}
</script>

输出

<script>
    var packages = [1,2,3,4]
</script>

1
这在Twig v2.13.1上不起作用,请使用@Stanley85的答案https://dev59.com/wK_la4cB1Zd3GeqPpTbr#63391632 - Arleigh Hix

1

试试这个:

//javascript
const myArray = JSON.parse('{{ packages[0] }}');

或者这个:
//javascript
const myArray = {{ packages[0] }};

1

现有的答案对我没有用。具体来说,当原始数组包含任何包含换行符(\n)的字符串时,它会失败。

这是对我有效的方法:

let jsArray = JSON.parse('{{ twig_array|json_encode|e("js") }}');

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