2012-12-18 6 views
36

के माध्यम से पारित एक चर का उपयोग करने के लिए जावास्क्रिप्ट का उपयोग करें मेरे पास एक नियंत्रक है जो एक टॉग टेम्पलेट में एक सरणी पास करता है, जिसे मैं उस पृष्ठ पर लिखी गई स्क्रिप्ट में उपयोग करना चाहता हूं। मुझसे यह कैसे होगा?ट्विग

मैं अपने .twig टेम्पलेट में इस की कोशिश की है:

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

लेकिन वह तभी काम करता है यह एक स्ट्रिंग है।

+1

वर्तमान आउटपुट और अपने प्रश्न का अपेक्षित आउटपुट आपकी समस्या का समाधान ढूँढने बहुत आसान बना सकते हैं जोड़ने में। – Supericy

उत्तर

125

आप सरणी json_encode करना पड़ सकता है, इस प्रयास करें:

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

जिसने मेरी समस्या का हल किया धन्यवाद! – ChaoticLoki

+3

कोई सुझाव ऑब्जेक्ट्स की सरणी के साथ ऐसा कैसे करें? – belens

+2

उद्धरण जोड़ने के लिए मत भूलना 'var test = '{{testArray | json_encode | raw}}';' –

7

पहले, डेटा json नियंत्रक से इनकोडिंग और

तो जावास्क्रिप्ट में

,

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

के साथ उपयोग करते समय चाबियों के ऑर्डर को उलट दिया गया था जो मेरे लिए एक था :) – Eagle1

+0

यह कोड असुरक्षित है (एक्सएसएस) –

+1

@ जोसेग्रिबेल गोंज़ालेज आप यह कैसे करेंगे? – Kangouroops

0

भेज मेरे नियंत्रक में मैं 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>