2012-06-21 25 views
5

में समेकित मैं एक सिम्फनी 2 प्रोजेक्ट में एसेटिक का उपयोग करने का प्रयास कर रहा हूं। मैं अपने config.yml में निम्नलिखित सेटिंग है:एबेटिक एसेट संग्रह डीबग मोड

# app/config/config.yml 
assetic: 
    debug:   %kernel.debug% 
    use_controller: true 
    filters: 
     cssrewrite: ~ 
     yui_css: 
      jar: /home/testing/bin/yuicompressor-2.4.7.jar 
     less: 
      node: /usr/bin/node 
      node_paths: [/usr/local/bin/] 
      apply_to: "\.less$" 
    assets: 
     all_js: 
      inputs: 
       - @FoundationViewBundle/Resources/public/js/* 
      filters: [?yui_js] 
     all_css: 
      inputs: 
       - @FoundationViewBundle/Resources/public/css/* 
      filters: [less, ?yui_css] 

(मामले आप सोच रहे हैं, इन सेटिंग्स config_dev.yml फ़ाइल में अधिरोहित जा रहा है।)

इन संग्रहों में Assetic द्वारा उठाया जाता है और उनके लिए मार्ग बनाए जाते हैं। फ़ाइल एक्सटेंशन के बिना प्रत्येक फ़ाइल के लिए अलग-अलग मार्ग और फ़ाइल नाम के साथ अलग-अलग मार्ग हैं। उदाहरण के लिए, "base.css" फ़ाइल के लिए, फ़ाइल डाउनलोड करने के लिए मार्ग (फ़िल्टर लागू के साथ) "/ परिसंपत्ति/all_css_part_1_base_1" है।

{% stylesheets '@all_css' %} 
    <link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}"> 
{% endstylesheets %} 

(। और इसी तरह "all_js" संग्रह के लिए, लेकिन मैं अपने मुद्दे को प्रदर्शित करने के लिए सीएसएस पक्ष का उपयोग करेंगे)

:

मैं तो मेरे टहनी टेम्पलेट में संपत्ति संग्रह के रूप में निम्नानुसार शामिल

जब ट्विग मेरा टेम्पलेट प्रस्तुत करता है, तो यह अलग-अलग फ़ाइलों के लिए बनाए गए मार्गों का उपयोग नहीं करता है, बल्कि "all_css" संग्रह के लिए "billing_url" को "/css/9118a5a_part_1.css" के रूप में प्रदर्शित करता है।

मैं देव फ्रंट कंट्रोलर का उपयोग कर रहा हूं और परीक्षण किया है कि एसेटिक का मानना ​​है कि यह डीबग मोड में है। (उत्पादन-केवल फ़िल्टर लागू नहीं होते हैं।) हालांकि अन्यथा सुझाव देने वाले दस्तावेज़ों के बावजूद फ़ाइलों को अभी भी संयोजित किया जा रहा है।

इन फ़ाइलों में समस्याओं को ट्रैक करना बहुत मुश्किल है क्योंकि पंक्ति संख्या मेल नहीं खाती है, खासकर जावास्क्रिप्ट त्रुटियों के लिए। क्या ट्विग फ़ाइलों को अलग से प्रदर्शित करने के लिए मुझे कुछ और करने की ज़रूरत है?

उत्तर

0

आप अपने टेम्पलेट में अलग-अलग संपत्तियां सूचीबद्ध कर सकते हैं, और यह अलग-अलग फाइलें, as documented here उत्पन्न करेगा। उत्पादन पर, इसे 1 फ़ाइल में जोड़ा जाएगा।

+0

मुझे इस टेम्पलेट का उपयोग एक बंडल के हिस्से के रूप में करने की उम्मीद थी जिसे कई परियोजनाओं में आयात किया जा सकता है और परियोजनाओं की कॉन्फ़िगरेशन के आधार पर सही संपत्तियां शामिल कर सकते हैं। अगर मैं सीधे संपत्ति को टेम्पलेट में डालता हूं तो यह उस तरह से पुन: प्रयोज्य नहीं होगा। (मुझे लगता है कि यदि मैं कोई अन्य रास्ता नहीं है, तो मैं ब्लॉक में परिसंपत्ति को शामिल कर सकता हूं और उन्हें एक परियोजना-विशिष्ट टेम्पलेट के साथ ओवरराइड कर सकता हूं।) – restouffer

1

आपको अपने twig ब्लॉक में ouput पैरामीटर निर्दिष्ट करना होगा।

{% javascripts '@all_js' output="assetic/js/all.min.js" debug=false %} 
    <script type="text/javascript" charset="utf-8" src="{{ asset_url }}"> 
{% endjavascripts %} 

{% stylesheets '@all_css' output="assetic/css/all.min.css" debug=false %} 
    <link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}"> 
{% endstylesheets %} 

सबसे अच्छा output पैरामीटर config.yml लेकिन दुर्भाग्य से यह काम नहीं करता में निर्दिष्ट पर भरोसा करने के लिए होगा। यह संपत्ति को डंप करते समय सही फ़ाइल आउटपुट करने के लिए काम करता है लेकिन टोग में स्वचालित रूप से संपत्ति सम्मिलित नहीं करता है। आपको इसे पिछले उदाहरण में निर्दिष्ट करना होगा।

डीबग तर्क यहां वैकल्पिक है, यह एक विशिष्ट संग्रह के लिए डीबग मोड को मजबूर करने और विभिन्न फ़ाइलों को आउटपुट करने के लिए है। आप इस पैरामीटर को config.yml पर भी सेट कर सकते हैं।

assets: 
    all_js: 
     inputs: 
      - @FoundationViewBundle/Resources/public/js/* 
     filters: [?yui_js] 
     output: "assetic/css/all.min.js" 
     debug: true