자바스크립트를 이용하여 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
'programing' 카테고리의 다른 글
마리아DB 프로시저 (0) | 2023.10.12 |
---|---|
프로그래밍 In C + Win API: Windows 7(윈도우 7)에서 컨트롤을 찾도록 하는 방법은 무엇입니까? (0) | 2023.10.12 |
문자열 바꾸기 - 주소 약어 (0) | 2023.10.12 |
CURRENT_TIMESTamp와 GETDATE()의 차이 (0) | 2023.10.12 |
Chrome의 Hovered element 검사? (0) | 2023.10.12 |