63

そのページに書かれたスクリプトで使用したい小枝テンプレートに配列を渡すコントローラーがあります。どうすればそれを行うことができますか?

私は .twig テンプレートでこれを試しました:

<script>
    $(document).ready(function(){
        var test = {{ testArray }};
});
</script>

ただし、それは文字列の場合にのみ機能します。

4

5 に答える 5

195

json_encode配列が必要になる場合があります。これを試してください:

<script>
    $(document).ready(function(){
        var test = {{ testArray|json_encode|raw }};
    });
</script>
于 2012-12-18T08:31:59.273 に答える
1

コントローラーに 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>
于 2016-04-11T20:38:41.657 に答える
0

json_encoderawフィルターと併用すると効果的です。

<script>
    $(document).ready(function(){
        let test = {{ testArray | json_encode(constant('JSON_HEX_TAG')) | raw }};
    });
</script>

JSON_HEX_TAGフラグを忘れないでください。
そうしないと、HTML が破損する可能性があります。文字列を含む<!--<script>ことは、それをテストする良い方法です。

于 2022-02-07T11:45:59.113 に答える