2017-04-12 93 views
0

我有一个数组ARR从控制器到含有一些JavaScript脚本枝杈模板的发送,我想使用for循环到阵列的访问的行是这样的:访问内的JavaScript变量{{}}的symfony枝杈

for (var i = 0; i < 3; i++) { 
       alert('{{ arr[i] }}'); 
      } 

但变量i是未知的,我得到这个错误:

变量 “i” 不存在。

有什么建议吗?

+2

你不能那样做。 JavaScript变量'i'仅在运行时可用。 你需要做的是将你的'树枝数组'解析为一个javascript。 [相关](http://stackoverflow.com/questions/13928729/use-javascript-to-access-a-variable-passed-through-twig) – DarkBee

+0

我该怎么做? – Hamza

+0

我们不知道你想做什么,添加一个更好的例子 – goto

回答

3

这是如何通过获得来自控制器的PHP数组的JavaScript数组树枝:

控制器

return $this->render(
    'AppBundle:index.html.twig', 
    array(
     'myArray' => array('foo', 'bar', 'z') 
    ) 
); 

树枝视图

{% block javascripts %} 
    <script type="text/javascript"> 
     var myArray = '{{ myArray | json_encode | raw }}'; 
    </script> 
{% endblock %} 
+0

谢谢你的工作,以防万一有人需要这个,解析你可以使用的数组myArray:var jsonData = JSON.parse(myArray); – Hamza

0

Twig是PHP。您将其值发送给JavaScript,但不能将JavaScript变量带到php中。 (除AJAX等......但在这里不相关)

可能:

/* javascript variable */ 
var name = {{ object.name }} 
console.log(name); 

不可能:

/* javascript variable */ 
var name = 'toto'; 
{# Twig #} 
{{ name }} // <- IMPOSSIBLE 
+0

在我的情况下,我发送php数组到javascript,但我不知道如何解析它。 – Hamza

+0

你可以使用Symfony序列化程序或者它的一些简单对象:[使用Javascript来访问通过Twig传递的变量](http://stackoverflow.com/questions/13928729/use-javascript-to-access-a-variable-传递树枝) – goto