javascript
  • symfony
  • twig
  • 2013-10-03 2 views 8 likes 
    8

    में परिवर्तनीय ट्विग मैं {{app.user}} जावास्क्रिप्ट में कैसे पास कर सकता हूं?जावास्क्रिप्ट

    अब के लिए मैं एक ब्लॉक करता हूं;

    <script type="text/javascript"> 
        var app_name = '{{ app_name }}'; 
        var app_url= '{{ app_url }}'; 
        var app_description= '{{ app_description }}'; 
        var app_email= '{{ app_email }}'; 
        var app_title= '{{ app_title }}'; 
        var app_dominio= '{{ app_dominio }}'; 
        var env = '{{ app.environment }}'; 
    </script> 
    

    जहां इन मानकों config.yml में स्थापित कर रहे हैं

    उत्तर

    14

    मैं क्या समाधान आप choosed साथ वास्तव में आपकी समस्या है, यह है कि एप्लिकेशन को छोड़कर {{app.user}} के साथ अच्छी तरह से काम करना चाहिए समझ में नहीं आता .user, एक वस्तु है तो आप अपने उपयोगकर्ता में एक toArray fonction है और बुलाना चाहिए:

    app_user = {{ app.user.toArray|json_encode() }}; 
    

    या जैसे {{app.user.id}}

    देखें उपयोगकर्ता के प्रत्येक पैरामीटर फोन: http://twig.sensiolabs.org/doc/filters/json_encode.html

    बीटीडब्ल्यू आपको अपने चर के लिए json_encode का उपयोग करना चाहिए, यदि आपके पास अपनी स्ट्रिंग में से कोई एक उद्धरण है तो यह आपके जावास्क्रिप्ट को तोड़ देगा। प्रोफ़ाइल के लिए

    उदाहरण:

    <script type="text/javascript"> 
        nickname = {{ profile.nickname|json_encode() }}; // Nickname will be a string 
        // 2nd solution if you have more informations related to profile 
        profile = { 
         nickname: {{ profile.nickname|json_encode() }}, 
         lastname: {{ profile.lastname|json_encode() }} 
        }; 
        // Profile is now an object with a nickname property. 
        // use profile.nickname on your javascripts 
    </script> 
    
    +0

    उदाहरण के लिए मेरे पास यह var twig {{profile.nickname}} है, अगर मैं अपने जावास्क्रिप्ट के अंदर {{profile.nickname}} के मान का उपयोग करना चाहता हूं? – Barno

    +1

    मैंने अपना जवाब अपडेट कर लिया है। – zapcost

    +0

    उत्तर के लिए धन्यवाद! – Barno

    0

    एक विशेषता या किसी टैग का प्रयोग करें

    उदाहरण: <span profile="{{ profile.nickname }}"></span>

    10

    स्वीकार कर लिया समाधान (? अब और) टहनी की वजह से काम नहीं करता है आउटपुट autoescaping, &quot के साथ सभी JSON " को बदलना;

    समतुल्य अब raw फिल्टर का उपयोग करना होगा:

    <script type="text/javascript"> 
        nickname = {{ profile.nickname|json_encode()|raw }}; // Nickname will be a string 
        // 2nd solution if you have more informations related to profile 
        profile = { 
         nickname: {{ profile.nickname|json_encode()|raw }}, 
         lastname: {{ profile.lastname|json_encode()|raw }} 
        }; 
        // Profile is now an object with a nickname property. 
        // use profile.nickname on your javascripts 
    </script> 
    

    कहा जा रहा है, सीधे जावास्क्रिप्ट में कच्चे JSON मुद्रण, कुछ समस्याएँ हो सकती हैं इस विन्यास में है:

    <script> 
        var myvar = {{ '{"test": "</script>"}'|raw }}; 
    </script> 
    

    JSON में </script> टैग HTML पार्सर द्वारा व्याख्या किया जाएगा, जिसके परिणामस्वरूप टूटी हुई स्क्रिप्ट होगी।

    यह करने के लिए नहीं बल्कि एक भाग निकले स्ट्रिंग के रूप में JSON प्रिंट, और फिर js स्क्रिप्ट के भीतर यह पार्स करने के लिए किया जाएगा वास्तव में सही तरीका:

    var title = '{{ 'My Daily Activities'|trans({}, 'general') }}'; 
    

    साथ:

    <script> 
        var myvar = JSON.parse('{{ '{"test": "</script>"}'|e('js') }}'); 
    </script> 
    
    0

    इस प्रयास करें अतिरिक्त apostrophy

    संबंधित मुद्दे