2013-02-22 49 views
6

कम से कम अन्य फ़ाइलों को आयात करने की शक्ति है। इस सवाल का उद्देश्य सिम्फनी प्रोजेक्टसिम्फनी 2 किसी अन्य बंडल से कम फ़ाइलों को कैसे आयात करें

में कम बंडल से कम फ़ाइलों के भीतर कम फ़ाइलों को आयात करने का एक समाधान ढूंढना है। मैं परिवर्तन देखने के लिए कम और एसेटिक का उपयोग करके सिम्फनी 2 प्रोजेक्ट पर काम कर रहा हूं। मेरी कम फ़ाइलें अन्य कम फ़ाइलों को आयात करने में सक्षम हैं, लेकिन केवल तभी जब वे एक ही बंडल में हों।

यदि मैं किसी अन्य बंडल से आयात करने का प्रयास करता हूं तो एसेटिक घड़ी त्रुटि "परिवर्तनीय अपरिभाषित" के साथ बंद हो जाती है क्योंकि आयात विफल रहता है।

मैं आयात में रास्तों के सभी प्रकार की कोशिश की है:

एक और बंडल में एक कम फ़ाइल में:

@import "../../../../MainBundle/Resources/public/less/colors.less"; 

@import "../../../../../../src/website/MainBundle/Resources/public/less/colors.less"; 

@import '/bundles/main/less/colors.less' 

@import url('/bundles/main/less/colors.less'); 

मुझे यकीन है कि मैं कई सही पथ की कोशिश की है, लेकिन वे कभी नहीं काम करें क्योंकि फ़ाइल एक और बंडल में है और एसेटिक घड़ी/कम संकलन प्रक्रियाएं बंडलों के बीच यह अच्छी तरह से नहीं करती हैं।

कोई भी विचार किसी को भी?

+0

यह भी आप कम फ़ाइलें गठबंधन करने के लिए assetic का उपयोग करने के लिए उन्हें आयात करने के बजाय एक विकल्प एक दूसरे के भीतर ffrom है? –

+1

काफी संभावना नहीं है .. मुझे विकास के दौरान, दूसरों के व्यवहार को बढ़ाने के लिए अन्य कम फ़ाइलों को आयात करने की संभावना की आवश्यकता है। –

+1

फ़िल्टर परिभाषा को देखो, ऐसा लगता है कि किसी भी कस्टम पथ (समावेशन के लिए खोज के लिए) पास करने का कोई तरीका नहीं है https://github.com/symfony/AsseticBundle/blob/master/Resources/config/filters/less.xml। यह कॉल करने का तरीका है: https://github.com/kriswallsmith/assetic/blob/master/src/Assetic/Filter/LessFilter.php#L59 – gremo

उत्तर

5

मुझे लगता है कि आपको वेब/बंडल डीआईआर के पथों का उपयोग करना होगा।

मैं फ़ाइलों इस तरह का आयात कर रहा हूँ:

  • src/Acme/FirstBundle/Resources/public/less/style1.less
  • src/Acme/SecondBundle/Resources/public/less/style2.less

मैं style2.less में style1.less आयात करना चाहते हैं:

मैं 2 कम फ़ाइलें

style2.less:

@import "../../acmefirst/less/style1"; 

का उपयोग कर: cssrewrite filer, lessphp

भी उनकी वास्तविक, सार्वजनिक रूप से सुगम्य पथ का उपयोग कम फ़ाइलों उल्लेख करने के लिए याद रखें: कम से कम Symfony 2.8 पर http://symfony.com/doc/current/cookbook/assetic/asset_management.html#including-css-stylesheets

+0

स्टाइलस फ़िल्टर (स्टाइल फाइल) के लिए भी काम करता है। –

1

यहां एक संपूर्ण काम कर उदाहरण है । यह उदाहरण एसेटिक का उपयोग करके और आपके सीएसएस में एम्बेड फ़ाइल के साथ काम करना चाहिए।

यहाँ

शखिरूपता

/app 
/src 
---/Acme 
------/MyBundle 
---------/Ressources 
------------/public 
---------------/css 
------/MyOtherBundle 
---------/Ressources 
------------/public 
---------------/css 
/web 
---/bundles 
------/acmemybundle 
------/acmemyotherbundle 
---/css 
------/built 

तो में मान लीजिए कि /src/Acme/MyBundle/Ressources/public/css/main.scss सब घोषणा है कि मैं में आयात करना चाहते हैं के साथ फाइल में है मेरी अन्य बंडल (मेरे मामले में मैं सैस का उपयोग करता हूं लेकिन यह कम के साथ समान है)।

में /src/Acme/MyOtherBundle/Ressources/public/css/mycss.scss मैं करूँगा:

@import "../../../../MyBundle/Resources/public/css/main"; 

इस फ़ाइल की क्लासिक भौतिक स्थान का उल्लेख है, तो आपके आईडीई होगा इसे खोजें।

अब दिलचस्प हिस्सा है।हम सभी scss फ़ाइल को केवल एक सीएसएस फ़ाइल में संकलित, छोटा और नामित करना चाहते हैं। हम इसे एसेटिक्स के साथ कर सकते हैं।

एक टवीग फ़ाइल में जहां आप अपना सीएसएस लोड करते हैं (मेरे मामले /app/Ressources/views/css.html.twig में)।

{% stylesheets 
    filter='compass' 
    filter='?uglifycss' 
    filter='cssrewrite' 
    output='css/built/myMinifiedAndCompiledSass.css' 
    'bundles/mybundle/css/*.scss' 
    'bundles/myotherbundle/css/*.scss' 
    %} 
    <link rel="stylesheet" type="text/css" href="{{ asset_url }}"> 
    {% endstylesheets %} 

==> यहाँ आप वाक्य रचना/वेब निर्देशिका (ताकि का उपयोग करने से फ़ाइल का उल्लेख करने के लिए है 'बंडलों/acmemybundle ..'। आप सिमलिंक मोड में संपत्ति स्थापित करने की आवश्यकता। (Php एप्लिकेशन/कंसोल संपत्ति : अपने conf.yml में

और अंत में स्थापित --symlink) ==> आप जो कुछ भी आप उत्पादन filemane और स्थान में करना चाहते हैं, क्योंकि आप वेब निर्देशिका में रहने के रख सकते हैं

# Assetic Configuration 
assetic: 
    filters: 
     cssrewrite: ~ 
     sass: ~ 
     compass: 
      load_paths: 
        - "/usr/bin/compass" 
        - "%kernel.root_dir%/../src/Acme/MyBundle/Resources/public/css/" 
     uglifycss: 
      bin: %kernel.root_dir%/../node_modules/.bin/uglifycss 
     uglifyjs2: 
      bin: %kernel.root_dir%/../node_modules/.bin/uglifyjs 

कंपास में load_paths का महत्वपूर्ण हिस्सा यहां है। बुनियादी सेट अप में आप कम्पास है: ~ आप के लिए इसे बदलने के लिए की जरूरत है:

compass: 
       load_paths: 
         - "/usr/bin/compass" 
         - "%kernel.root_dir%/../src/Acme/MyBundle/Resources/public/css/"