2012-01-07 29 views
10

मेरे समस्या:Symfony2 Assetic + टहनी खाका जावास्क्रिप्ट विरासत

मैं 3 टेम्पलेट्स:

  • main.html.twig (मुख्य लेआउट फ़ाइल)
  • layout.html.twig (एक बंडल विशिष्ट लेआउट ओवरराइड जो कुछ बंडल विशिष्ट जे एस शामिल टैग)
  • create.html.twig (एक पृष्ठ विशिष्ट टेम्पलेट फ़ाइल जिसमें कुछ पेज विशिष्ट जेएस टैग भी शामिल हैं)

मैं अपने मूल लेआउट (main.html.twig) में 'जावास्क्रिप्ट' नामक एक ब्लॉक को परिभाषित कर रहा हूं, फिर इसे ओवरराइड कर रहा हूं (लेकिन को layout.html.twig पर कॉल कर रहा हूं। यह ठीक काम करता है, और मुख्य टेम्पलेट फ़ाइल से जेएस टैग अभी भी layout.html.twig टेम्पलेट में उन लोगों के ऊपर शामिल हैं।

मैं तो ब्लॉक अधिभावी इस प्रकार, create.html.twig फ़ाइल में भी ऐसा ही:

{% block javascripts %} 
    {{ parent() }} 
    {% javascripts '@BundleName/Resources/public/js/application.album.uploader.js' 
        '@BundleName/Resources/public/js/jquery.uploadify.js' 
        '@BundleName/Resources/public/js/swfuploadify.js' filter='?yui_js' %} 
     <script src='{{ asset_url }}' type='text/javascript'></script> 
    {% endjavascripts %} 
{% endblock %} 

इस बिंदु पर, के बजाय सिर्फ माता-पिता (layout.html.twig) में जावास्क्रिप्ट ब्लॉक अधिभावी और सहित सभी स्क्रिप्ट यह ऊपर टेम्पलेट्स में परिभाषित है, यह करता है निम्नलिखित:

  • डंप उत्पादन (जो एक त्रुटि का कारण बनता है के बीच में <script> टैग, क्योंकि मेरेमेंफ़ाइल मैं केवल HTML मार्कअप
  • तो यह भी स्क्रिप्ट उदासीनता बाहर दूसरों के बाकी के साथ (के रूप में मैं इसे करने के लिए उम्मीद करेंगे)

मैं नहीं कर रहा हूँ के अंत में jQuery पुस्तकालय शामिल कर रहा हूँ सुनिश्चित करें कि स्क्रिप्ट को create.html.twig टेम्पलेट के बीच में डंप किया जा रहा है, और मैं भी उलझन में हूं कि उन्हें स्क्रीन पर दो बार क्यों डाला जा रहा है (एक बार निर्माण के बीच में और फिर नीचे एक साथ main.html.twig और layout.html.twig से मेरी बाकी सभी स्क्रिप्ट्स के साथ।

क्या किसी को कोई विचार है? अगर कुछ अस्पष्ट है या मैं कुछ और जानकारी प्रदान कर सकता हूं तो मुझे बताएं।

संपादित करें:

फ़ाइल सामग्री नीचे हैं ...

main.html.twig: https://gist.github.com/7f29353eaca0947528ce

layout.html.twig: https://gist.github.com/734947e9118b7765715e

create.html.twig: https://gist.github.com/c60c8d5c61e00ff86912

संपादित करें 2:

मुझे आज सुबह इस मुद्दे पर एक और नजर आ रही है और ऐसा लगता है कि स्टाइलशीट के लिए यह वही काम कर रहा है।मैं अपने layout.html.twig में pagescripts नामक एक नया ब्लॉक परिभाषित करने के लिए और फिर मेरी create.html.twig में ब्लॉक का उपयोग करने की कोशिश की, लेकिन यह एक ही परिणाम था, यह सिर्फ मैं जहाँ भी

{% block pagescripts %} 
    (scripts here) 
{% endblock} 
+0

जब पृष्ठ के मध्य में स्क्रिप्ट टैग डंप किया जाता है तो इसमें '{{parent()}} आउटपुट भी शामिल है? –

+0

नहीं, मेरी 'create.html.twig' फ़ाइल में केवल तीन स्क्रिप्ट्स – JamesHalsall

+0

@ क्रिसवॉलस्मिथ कोई विचार है कि मैं संभवतः क्रिस का प्रयास कर सकता हूं? यदि आवश्यकता हो तो मैं – JamesHalsall

उत्तर

2

मुझे समस्या मिली। create.html.twig में मैं अपने के अंदर अपनी {% block javascripts %} सामग्री को परिभाषित कर रहा था, इसलिए मुझे लगता है कि टिग content ब्लॉक के अंदर javascripts ब्लॉक के आउटपुट को प्रस्तुत कर रहा था।

ब्लॉक के बाहर {% block javascripts %} सामग्री को स्थानांतरित करने से समस्या ठीक हो गई।

0

यहाँ का उपयोग एक है स्क्रिप्ट और स्टाइलशीट डंप करने लगता है main.html.twig का उदाहरण:

<body> 
    {% block stylesheets %} 
    {% endblock %} 

    {% block jsscript %} 
    {% endblock %} 

    {% block content %} 
    {% endblock %} 
</body> 
अपने create.html.twig

{% extends '::base.html.twig' %} 

{% block jsscript %} 
    my javascript files... 
{% endblock %} 

{% block content %} 
<h1>Create</h1> 

<form action="{{ path('entity_create') }}" method="post" {{ form_enctype(form) }}> 
    {{ form_widget(form) }} 
    <p> 
     <button type="submit">Create</button> 
    </p> 
</form> 

{% endblock %} 

आप अभी भी समस्या है, तो में

, आप एक दस्तावेज़ तैयार फ़ंक्शन जोड़ सकते हैं:

$(document).ready(function() { 
    // put all your jQuery goodness in here. 
}); 
+0

दुर्भाग्य से jQuery उत्तरदायी लोड किया है, लेकिन बाद में केवल इतना ही है, मैं लाइब्रेरी को दो बार लोड नहीं करना चाहता ... अगर मेरे स्क्रिप्ट टैग सही जगह पर प्रस्तुत किए जाते हैं तो jquery लाइब्रेरी को किसी भी उपयोग से पहले लोड किया जाएगा – JamesHalsall

+0

'jsscript' == "जावास्क्रिप्टस्क्रिप्ट"? :) – NDM

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