我有两个阵列,我传给了树枝。第一个是
array(1) {
[0]=>
array(2) {
["name"]=>
string(5) "name1"
["data"]=>
array(2) {
[0]=>
array(2) {
[0]=>
int(1474837200000)
[1]=>
int(1244)
}
[1]=>
array(2) {
[0]=>
int(1474923600000)
[1]=>
int(3100)
}
}
和第二个
array(1) {
["positive"]=>
array(1) {
[0]=>
array(2) {
[0]=>
int(1474837200000)
[1]=>
int(371)
}
}
我将这两个数组传递给我的twig模板,之后尝试用JS将其内容放到屏幕上
document.write({{array1|json_encode|raw}})
或document.write({{array2|json_encode|raw}})
问题是第二个数组打印好了,第一个数据只打印[object Object]
而没有任何内容,如果我尝试用array1.0.name
访问第一个数组的键(我想要name1)我的屏幕空白了。
{{dump(array1)}}
在两种情况下均正常
UPD 最后,我得到了它的工作。问题是我需要在Javascript函数中访问twig变量。它只获取数组,即使只是一个普通的字符串也必须转换为数组。如果它获得关联数组,则结果为[object Object]。是否有这种行为的原因?
第二个问题与问题有关。是否可以在JS函数中使用Twig for-loop?考虑这个JS代码:
Myfunction([ [array1], [array2], [array3], [arrayN] ]);
每次我获得需要传递给JS的可变数量的数组。怎么办?我应该尝试以某种方式从twig中制作一个JS数组,还是有一个更优雅的解决方案?谢谢。
答案 0 :(得分:0)
枝条
<script>
{% for var, value in parms %}
var {{ var }} = {{ value|json_encode|raw }};
{% endfor %}
console.log({{ parms|keys|join(',') }});
</script>
输入JSON
{"parms":{"arr1":{"foo":"bar","bar":"foo"},"arr2":{"foo":"bar","bar":"foo"},"arr3":{"foo":"bar","bar":"foo"}}}
输出
var arr1 = {"foo":"bar","bar":"foo"};
var arr2 = {"foo":"bar","bar":"foo"};
var arr3 = {"foo":"bar","bar":"foo"};
console.log(arr1,arr2,arr3);