2012-02-23 25 views
14

में एसेटिक के लिए आउटपुट डीआईआर कॉन्फ़िगर करें मैं अपने जेएस फाइलों को एसेटिक डंप के आउटपुट डीआईआर को वैश्विक रूप से कॉन्फ़िगर करना चाहता हूं। वर्तमान में, वे हमेशा web/js/* पर जाते हैं। मैं इसे web/js/compiled/* में बदलना चाहता हूं।सिम्फनी 2

यह एक प्रति-फ़ाइल स्तर पर इस निर्दिष्ट करने के लिए संभव है: http://symfony.com/doc/2.0/cookbook/assetic/asset_management.html#dumping-asset-files

मेरी Symfony एप्लिकेशन में वैश्विक रूप से इस सेट के लिए एक रास्ता खोजने के लिए प्रतीत नहीं कर सकते। कोई कॉन्फ़िगरेशन पैरामीटर मैं याद कर रहा हूँ?

अद्यतन

मिले एक assetic config पैरामीटर write_to कहा जाता है। config.yml में इसे सेट करने से कमांड लाइन assetic:dump को नई डीआईआर में फ़ाइलों को डंप करने का कारण बनता है, लेकिन ट्विग फाइलों के भीतर asset_url var अभी भी मूल पथ को इंगित करता है।

+0

क्या तुमने कभी एक समाधान के साथ आया था? मुझे लगता है कि कॉन्फ़िगरेशन में 'read_from' विकल्प वह होगा जो हम देख रहे हैं। हालांकि, मुझे कुछ भी करने का विकल्प नहीं मिल सकता है। मैंने जो भी read_from पैरामीटर सेट किया है, उसके बावजूद, मेरा एप्लिकेशन डिफ़ॉल्ट पथ का उपयोग करता है। – kmfk

+0

@kmfk अभी तक कुछ भी नहीं। अभी, हम बस 'जावास्क्रिप्ट' ब्लॉक के लिए 'आउटपुट' परम सेट कर रहे हैं, लेकिन यह बिल्कुल आदर्श नहीं है। – anushr

+0

हाँ, मेरे पास संपत्तियों को सीधे हमारी एस 3 बाल्टी में डंप कर दिया गया है और मैं प्रोड पर्यावरण को वहां से फ़ाइलों को पढ़ने के लिए चाहता था - जबकि देव पर्यावरण स्थानीय फ़ोल्डर में डंप करता है और जैसा कि हमारे टेम्पलेट्स को उस फ़ोल्डर से पढ़ना चाहिए देव सर्वर मैं नियंत्रक में पर्यावरण की जांच कर रहा हूं और सीडीएन के लिए 'property_url' उपसर्ग करने के लिए टेम्पलेट में एक var पास कर रहा हूं। आदर्श नहीं है, लेकिन यह नौकरी करता है। – kmfk

उत्तर

4

आप रिश्तेदार पथ का उपयोग करने के बजाय, स्थाई पथ के लिए संपत्ति पथ (assets_base_urls) सेट कर सकते हैं। अपने config.yml फ़ाइल में, यह इस के समान दिखेगा:

framework: 
    templating: 
     engines: ['twig'] 
     assets_base_urls: 
      http: [http://path.to-cdn.com] 

यह assetic के साथ-साथ टहनी के asset() विधि से asset_url प्रभाव होगा। उत्तरार्द्ध वांछित हो सकता है या नहीं भी हो सकता है।

16

आपको संपत्ति लिखने का उपयोग करना चाहिए

# Assetic Configuration 
assetic: 
    debug:   %kernel.debug% 
    use_controller: %kernel.debug% 
    read_from:  %kernel.root_dir%/Resources/views/ 
    write_to:  %kernel.root_dir%/../web/static/ 

उदाहरण के लिए मेरी विन्यास में

मैं उपयोग आपका ouput स्ट्रिंग शुरू जहां समाप्त होता है write_to उदाहरण

{% javascripts filter="closure" output='js/main.js' 

के लिए

...

{% stylesheets filter='compass,?cssrewrite' 
    'default/static/sass/screen.scss' 
    output='css/screen.css' 
%} 

दोनों /web/static/js/main.js और /web/static/css/screen.css

assets_base_urls में क्रमशः रखा जाएगा आधार यूआरएल निर्दिष्ट करने के लिए प्रयोग किया जाता है http और ssl (https) पृष्ठों से संदर्भित संपत्तियों के लिए उपयोग किया जाना है।

!!assets_base_urls भी output मूल्य से पहले {% images %} रूट के रूप में प्रयोग किया जाता है, लेकिन {% images %}write_to पर विचार नहीं करता है जब एचटीएमएल प्रतिपादन (केवल जब डंपिंग) तो write_to का उपयोग कर बेहतर नहीं है और केवल output मूल्य पर निर्भर हैं। इसके बारे में my other post on stackoverflow और this post on AsseticBundle's github में इसके बारे में अधिक जानकारी।

+0

इस तरह की एक मुश्किल सिम्फनी :) – userlond

-4

इस commande $ app/console --env=prod assetic:dump web/ आप यूआरएल से आप raher चाहते बदलने के लिए जस्ट है 'वेब /'

2

This GitHub issue comment मुझे इस मुद्दे के साथ मदद की कोशिश करो। देव में रहते हुए, आपकी संपत्ति अभी भी नियंत्रक के माध्यम से जाएगी लेकिन उत्पादन में, यूआरएल आपकी इच्छानुसार होगी।

उदाहरण config.yml: अपने खाके में

assetic: 
    write-to: %kernel.root_dir%/../web/assets 
    ... 
framework: 
    ... 
    templating: 
     engines: ['twig'] 
     packages: 
      assetic: 
       base_urls: '/assets' 

उदाहरण:

{% block javascripts %} 
    {% javascripts '@jquery' '@bootstrap_js' '@backbone' '@handlebars' combine=true package='assetic' %} 
    <script src="{{ asset_url }}"></script> 
    {% endjavascripts %} 
{% endblock %} 

सूचना आपको जावा स्क्रिप्ट टैग में पैकेज = 'assetic' विशेषता को जोड़ने के लिए है। यह एक अच्छा समझौता आईएमओ है क्योंकि यह kmfk के समाधान के रूप में अन्य बंडलों से परिसंपत्तियों को तोड़ नहीं देगा।

2

इस पर बस एक त्वरित नोट। यदि आप assets_base_urls का उपयोग कर रहे हैं, तो एक सापेक्ष आधार URL निर्दिष्ट करने के लिए, यह केवल उस संस्करण में नए संपत्ति घटक के परिचय के कारण सिम्फनी 2.7 से पहले काम करता है। यह कैसे परिवर्तित करने के लिए पर अधिक जानकारी के http://symfony.com/blog/new-in-symfony-2-7-the-new-asset-component पर उपलब्ध है, लेकिन लंबे और यह की कमी है जो:

framework: 
    templating: 
     assets_base_urls: 
      http: ['/some-relative-url'] 
      ssl: ['/some-relative-url'] 

हो जाता है:

framework: 
    assets: 
     base_path: /some-relative-url