programing

자바스크립트를 이용하여 Twig를 통과한 변수에 접근하기

css3 2023. 10. 12. 23:25

자바스크립트를 이용하여 Twig를 통과한 변수에 접근하기

배열을 가지 템플릿에 전달하는 컨트롤러가 있는데, 그 페이지에 작성된 스크립트에서 사용하고자 합니다.제가 그걸 어떻게 해야 하죠?

.twig 템플릿에서 사용해봤습니다.

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

하지만 그건 끈일 때만 가능합니다.

당신이 해야할지도 모릅니다.json_encode어레이를 사용해 보십시오.

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

먼저 controller에서 인코딩된 data json을 보내고

자바스크립트에서

var context= JSON.parse('{{ YourArrayFromController|raw}}');

이런 식으로 합니다.

컨트롤러 test.data를 반환합니다.

$test = array('data' => array('one','two'))

잔가지:

<div id="test" data-is-test="{{ test.data|json_encode }}"></div>

Js:

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

출력:

 ["one", "two"]

여기에 있는 서류

json_encode잘 작동합니다. 와 조합하여raw거름망을 치다

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

잊지 마세요.JSON_HEX_TAG깃발을 올리다
그렇지 않으면 HTML이 깨질 수 있습니다. 문자열을 포함하는 것이 이를 테스트하는 좋은 방법입니다.

내 컨트롤러에 직렬화기 번들 설치

$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>

언급URL : https://stackoverflow.com/questions/13928729/use-javascript-to-access-a-variable-passed-through-twig