php将对象传递给树枝

时间:2016-10-26 16:18:10

标签: twig

我有两个阵列,我传给了树枝。第一个是

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数组,还是有一个更优雅的解决方案?谢谢。

1 个答案:

答案 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);

fiddle