2015-08-23 5 views
5

का उपयोग कर मैं आसानी से इस तरह मेरी टहनी टेम्पलेट में सीएसएस फ़ाइलों को शामिल कर सकते हैं टहनी टेम्पलेट में JavaScript फ़ाइलों को शामिल करने के लिए:कैसे Symfony2

{% block stylesheets %} 
    <link rel="stylesheet" href="{{ asset('bundles/user/css/bootstrap.min.css') }}"/> 
    <link rel="stylesheet" href="{{ asset('bundles/user/css/bootstrap-theme.min.css') }}"/> 
    <link rel="stylesheet" href="{{ asset('bundles/user/css/main.css') }}"/> 
{% endblock %} 

लेकिन मेरी जावास्क्रिप्ट फ़ाइलों के लिए

{% block javascripts %} 
    <script src="{{ asset('bundles/user/js/jquery-1.11.3.min.js') }}"></script> 
    <script src="{{ asset('bundles/user/js/bootstrap.min.js') }}"></script> 
{% endblock %} 

दृष्टिकोण काम नहीं करता है । मैंने assetics का भी उपयोग करने की कोशिश की, लेकिन यह भी काम नहीं किया।

+0

था: स्थापित करें? – Cyrille

उत्तर

10

मैं एसेटिक दृष्टिकोण की सिफारिश करता हूं। यह बिल्कुल आसान नहीं है, लेकिन यह आपको बहुत बड़ा लाभ देता है।

सबसे पहले, इस तरह एक टेम्पलेट में अपने जे एस एम्बेड:

{% block my_javascripts %} 
    {% javascripts 
     '@FooBarBundle/Resources/public/js/foo.js' 
     '@FooBarBundle/Resources/public/js/bar.js' 

     filter='?uglifyjs2' 
    %} 
    <script src="{{ asset_url }}" type="text/javascript"></script> 
    {% endjavascripts %} 
{% endblock %} 

के रूप में आप की तरह जोड़े के रूप में कई जे एस फ़ाइलें।

app/console assetic:dump 

अपने dev वातावरण में, इस दस्तावेज़ जड़ के भीतर अपने जे एस फ़ाइलों की एक प्रतिलिपि उत्पन्न करेगा:

अब कमांड लाइन पर निम्नलिखित चलाते हैं। आपके prod में, यह एक डॉक रूट में संयुक्त फ़ाइल उत्पन्न करेगा - पहला लाभ।

जब तुम, उन्हें संपादित करें कमांड लाइन से निम्नलिखित चलाने के लिए, और यह चालू रखने (रद्द तो साथ Ctrl + C) पूरा होने तक अपनी फ़ाइलें पृष्ठभूमि में स्वचालित रूप से उत्पन्न है करने के लिए:

app/console assetic:watch --force 

(--force विकल्प Assetic फ़ाइलें उत्पन्न करने के लिए भले ही यह वहाँ किसी भी संशोधन होना प्रतीत नहीं होती है।)

एक और लाभ यह filter='uglifyjs2' बयान है: यह UgilifyJS साथ "संकुचित" होने के लिए फ़ाइलों का कारण बनता है, जो बहुत तेजी से लोड होता है। आप अनुप्रयोग/कंसोल संपत्ति कर

Read more about using Assetic for JS and CSS in Symfony2 in the cookbook.

+0

धन्यवाद, यह काम किया। अफसोस की बात है, मुझे वास्तव में प्रत्येक फ़ाइल निर्दिष्ट करना है, अन्यथा jQuery को पहले नहीं कहा जाएगा। मेरा एक सवाल है। क्या मैं सीएसएस और जेएस फ़ाइलों को सीधे/वेब में डाल सकता हूं? या क्या यह वास्तव में बंडल के सार्वजनिक फ़ोल्डर के अंदर रखना जरूरी है? – mfgabriel92

+0

यदि आप पहले जेक्यू लोड करना चाहते हैं, तो फ़ाइल को '000.jquery.js' पर नाम बदलने का प्रयास करें (केवल एक अनुमान है, यह नहीं पता कि वे वर्णानुक्रम में शामिल हैं या नहीं)। – lxg

+0

आपको जेएस/सीएसएस को सीधे '।/Web' में नहीं डालना चाहिए। उन्हें 'सार्वजनिक' फ़ोल्डर में बेहतर रखें और उन्हें 'ऐप/कंसोल संपत्तियों के साथ कॉपी करें: इंस्टॉल करें'। लेकिन इस मामले में, सार्वजनिक पथ कुछ/'बंडल/yourbundle/css/... 'जैसा होगा। हालांकि, एसेटिक के साथ इसका कोई लेना-देना नहीं है, यह संपत्ति प्रबंधन के सिम्फनी-आंतरिक तरीके है। (थोड़ा उलझन में है, लेकिन आपको विचार मिल जाएगा।) – lxg