2012-02-29 16 views
6

का उपयोग कर सापेक्ष छवियों की सेवा करना मैं symfony2 एसेटिक बंडल को समझने की कोशिश कर रहा हूं। मैं एक jquery प्लगइन का उपयोग करने की कोशिश कर रहा हूं जो इसकी अपनी सीएसएस फ़ाइल का उपयोग करता है। मैं mybundle/Resources/public में सब कुछ डाल दिया है और उसके बाद में छवियों/जावास्क्रिप्ट/और सीएसएस विभाजित/संपत्ति

प्लगइन्स सीएसएस संबंधित पथ उपयोग कर रहा है ../images/sprite.png

सीएसएस फ़ाइल की सेवा के लिए assetic का उपयोग करते हुए की तरह चित्र प्राप्त करने:

{% stylesheets 
    '@MyBundle/Resources/public/css/mycss.css' 
%} 
<link rel="stylesheet" href="{{ asset_url }}" /> 
{% endstylesheets %} 

संपत्ति द्वारा उत्पन्न पथ /app_dev.php/css/mycss.css है, जो मुझे सही लगता है। स्पष्ट रूप से सापेक्ष छवि पट्ट अब और काम नहीं कर रहे हैं। चूंकि फाइलें माइबंडल/संसाधन/सार्वजनिक में नहीं हैं और इन्हें/छवियों/

cssrewrite फ़िल्टर का उपयोग करने का प्रयास करते समय, पैथ को फिर से लिखा जाता है: http://server.com/Resources/public/images/sprite.png। लेकिन यह मैं सही नहीं हूं, फाइलें वहां स्थित नहीं हैं।

मैं संपत्ति का उपयोग करके संबंधित छवियों को कैसे सेवा दे सकता हूं?

+0

मैंने एक समान प्रश्न पूछा: http://stackoverflow.com/questions/9500573/path-of-assets-in-css-files-in-symfony2 (आप इसे हल करने के लिए मेरी कोशिश भी देख सकते हैं) – apfelbox

उत्तर

4

आप आउटपुट पथ का जादू कर सकते हैं और cssrewrite का उपयोग नहीं कर सकते हैं।

{% stylesheets output="bundles/zaysoarbiter/css/forms2.css" 
    '@ZaysoArbiterBundle/Resources/public/css/forms2.css' 
%} 

और फिर बेशक आप assets:install का उपयोग web/bundles/bundle/images या जहाँ भी अपने चित्रों की नकल करने के लिए। जहां तक ​​ब्राउज़र का संबंध है, आपके सीएसएस और छवियां अब एक-दूसरे के सापेक्ष स्थित हैं। उत्पादन में आप वास्तविक उत्पन्न सीएसएस फ़ाइल को स्थानांतरित करने के लिए assetic:dump का उपयोग करेंगे।

+2

इस समाधान का उपयोग करते समय, छवियों के लिए देव पर्यावरण में पथ है: app_dev.php/bundles/mybundle/images/sprite.png, जिसके परिणामस्वरूप NotFoundHttpException में परिणाम होता है। क्या आपके पास देव env की सेवा करने का समाधान भी है? – dvcrn

+0

चूंकि छवियों को बदलने की ज़रूरत नहीं है, इसलिए मैं केवल संपत्ति का उपयोग करता हूं: उन्हें अपनी dev मशीन पर स्थापित करने के लिए इंस्टॉल करें। इसलिए जब सीएसएस गतिशील रूप से उत्पन्न होता है तो छवियां बस वहां बैठती हैं। वास्तविक प्रतियां बनाने से बचने के लिए आप - सिमलिंक विकल्प का उपयोग कर सकते हैं। – Cerad

+0

मुझे लगता है कि मैंने अपनी समस्या को गलत तरीके से गलत लिखा है। मेरे यूआरएल में "app.php" या "app_dev.php" होने पर (उदाहरण: app.php/bundles/mybundle/images/sprite.png), परिणाम 404 है। app.php/app_dev छोड़ते समय .php (उदाहरण: बंडल/mybundle/images/sprite.png), पथ ठीक है और छवि परोसा जा रहा है। एसेटिक आपके वर्तमान वातावरण के माध्यम से सीएसएस फ़ाइलों को सेवा प्रदान करता है। यदि आप app_dev.php का उपयोग कर रहे हैं, तो यह सभी एसेटिक जेनरेट स्टाइल यूआरएल में भी है। सभी रिश्तेदार छवि पट्टियों का मतलब है (.css फ़ाइलों के अंदर) app_dev.php का भी उपयोग कर रहे हैं, जिसके परिणामस्वरूप यूआरएल ऊपर उल्लिखित है। – dvcrn

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