使用Javascript访问通过Twig传递的变量

cli*_*uke 52 javascript php symfony twig

我有一个控制器将数组传递给twig模板,我想在该页面上编写的脚本中使用它.我该怎么做呢?

我在我的.twig模板中试过这个:

<script>
    $(document).ready(function(){
        var test = {{ testArray }};
});
</script>
Run Code Online (Sandbox Code Playgroud)

但这只有在它是一个字符串时才有效.

Sup*_*icy 162

你可能需要json_encode这个数组,试试这个:

<script>
    $(document).ready(function(){
        var test = {{ testArray|json_encode|raw }};
    });
</script>
Run Code Online (Sandbox Code Playgroud)

  • 不,你不想引用它.这将使变量成为包含json值的字符串.如果没有引号,它将被正确解析为数组对象. (8认同)
  • 有关如何对一组对象做同样的建议吗? (4认同)
  • 不要忘记添加引号`var test ='{{testArray | json_encode | raw}}';` (2认同)

小智 10

首先,发送从控制器编码的数据json

然后在javascript中,

var context= JSON.parse('{{ YourArrayFromController|raw}}');
Run Code Online (Sandbox Code Playgroud)

  • @JoséGabrielGonzález你会怎么做? (2认同)

sha*_*002 5

我这样做:

然后返回控制器test.data

$test = array('data' => array('one','two'))
Run Code Online (Sandbox Code Playgroud)

枝条:

<div id="test" data-is-test="{{ test.data|json_encode }}"></div>
Run Code Online (Sandbox Code Playgroud)

杰斯:

$(document).ready(function() {
    var test = $('#test').data("isTest");
    console.log(test);
});
Run Code Online (Sandbox Code Playgroud)

输出:

 ["one", "two"]
Run Code Online (Sandbox Code Playgroud)

文档在这里