我有一个控制器,它将一个数组传递给一个分支模板,我想在该页面上编写的脚本中使用它。我已经在我的.twig模板中尝试过了:
<script> $(document).ready(function(){ var test = {{ testArray }}; }); </script>
但只有字符串才有效。
iqxoj9l91#
您可能需要json_encode数组,请尝试以下操作:
json_encode
<script> $(document).ready(function(){ var test = {{ testArray|json_encode(constant('JSON_HEX_TAG'))|raw }}; }); </script>
gdrx4gfi2#
首先,发送来自控制器的json编码数据,并然后在JavaScript中,
var context= JSON.parse('{{ YourArrayFromController|raw}}');
dluptydi3#
"我是这么做的"返回控制器test.data然后
$test = array('data' => array('one','two'))
小枝:
<div id="test" data-is-test="{{ test.data|json_encode }}"></div>
詹:
$(document).ready(function() { var test = $('#test').data("isTest"); console.log(test); });
输出量:
["one", "two"]
documentation here
disho6za4#
json_encode与raw过滤器结合使用效果很好。
raw
<script> $(document).ready(function(){ let test = {{ testArray | json_encode(constant('JSON_HEX_TAG')) | raw }}; }); </script>
不要忘记JSON_HEX_TAG标志。否则,您可能会得到不完整的HTML。A string containing <!--<script>是一个很好的测试方法。
JSON_HEX_TAG
<!--<script>
91zkwejq5#
我在我的控制器中安装了SerializerBundle
$serializer = $this->get('serializer'); $countries = $this->getDoctrine()->getRepository("QSCORBundle:CountryMaps")->findAll(); $jsonCountries = $serializer->serialize($countries, 'json'); return $this->render('QSCORBundle:Default:index.html.twig',array("countries"=> $jsonCountries));
在我的档案中
<script type="text/javascript" > var obj = {{ countries|json_encode|raw }}; var myObject = eval('(' + obj + ')'); console.log(myObject[0]['capital_latitude'] + " " + myObject[0]['capital_longitude']);//for the First Element </script>
5条答案
按热度按时间iqxoj9l91#
您可能需要
json_encode
数组,请尝试以下操作:gdrx4gfi2#
首先,发送来自控制器的json编码数据,并
然后在JavaScript中,
dluptydi3#
"我是这么做的"
返回控制器test.data然后
小枝:
詹:
输出量:
documentation here
disho6za4#
json_encode
与raw
过滤器结合使用效果很好。不要忘记
JSON_HEX_TAG
标志。否则,您可能会得到不完整的HTML。A string containing
<!--<script>
是一个很好的测试方法。91zkwejq5#
我在我的控制器中安装了SerializerBundle
在我的档案中