そのページに書かれたスクリプトで使用したい小枝テンプレートに配列を渡すコントローラーがあります。どうすればそれを行うことができますか?
私は .twig テンプレートでこれを試しました:
<script>
$(document).ready(function(){
var test = {{ testArray }};
});
</script>
ただし、それは文字列の場合にのみ機能します。
そのページに書かれたスクリプトで使用したい小枝テンプレートに配列を渡すコントローラーがあります。どうすればそれを行うことができますか?
私は .twig テンプレートでこれを試しました:
<script>
$(document).ready(function(){
var test = {{ testArray }};
});
</script>
ただし、それは文字列の場合にのみ機能します。
json_encode
配列が必要になる場合があります。これを試してください:
<script>
$(document).ready(function(){
var test = {{ testArray|json_encode|raw }};
});
</script>
コントローラーに 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>
json_encode
raw
フィルターと併用すると効果的です。
<script>
$(document).ready(function(){
let test = {{ testArray | json_encode(constant('JSON_HEX_TAG')) | raw }};
});
</script>
JSON_HEX_TAG
フラグを忘れないでください。
そうしないと、HTML が破損する可能性があります。文字列を含む<!--<script>
ことは、それをテストする良い方法です。