2014-04-21 23 views
10

के साथ सामान्य संपत्तियां मैं अलग फ्रंटेंड, बैकएंड, सामान्य और कंसोल अनुप्रयोगों के साथ वाईआई 2 की उन्नत कॉन्फ़िगरेशन का उपयोग करना चाहूंगा। मेरे पास स्टाइलशीट्स, जेएस फाइलें और फ़ॉन्ट्स सहित कई आम संपत्तियां हैं जिनका उपयोग फ्रंटेंड और बैकएंड अनुप्रयोगों दोनों में किया जाएगा। यह केवल तब समझ में आता है जब उन संपत्तियों को आम तौर पर एक संपत्ति फ़ोल्डर में रखा जाता है।वाईआई 2: उन्नत कॉन्फ़िगरेशन

फिर, मेरी क्वांट्री शुरू होती है। ऐसा लगता है कि मुझे समग्र एप्लिकेशन के अग्रभाग और बैकएंड भागों में संपत्तियों का प्रबंधन करने के लिए एक अलग AppAsset.php फ़ाइल की आवश्यकता है क्योंकि कुछ चीजें दोनों के बीच अलग होंगी। (मुझे सच में यकीन नहीं है कि फ्रंटएंड, बैकएंड इत्यादि को ओवररार्किंग कुछ के भीतर अलग-अलग एप्लिकेशन के रूप में संदर्भित करना है, या उन्हें बड़े ओवरराइंग एप्लिकेशन के उप-अनुप्रयोगों को कॉल करना है।) वैसे भी, ऐसा लगता है कि मुझे दो AppAsset प्रबंधकों की आवश्यकता होगी । मैं सभी फ़ाइल रूपांतरणों (उदाहरण के लिए scss → css) को संभाल दूंगा और फ़ाइल संपीड़न स्वयं कर दूंगा, इसलिए मुझे ऐसा करने के लिए संपत्ति प्रबंधक को कॉन्फ़िगर करने की आवश्यकता नहीं है।

दुर्भाग्यवश, AppAsset पर प्रलेखन और संपत्ति बंडल एक बंडल में विशिष्ट फ़ाइलों या निर्देशिकाओं को शामिल करने के तरीके पर स्पष्ट नहीं है। एकमात्र चीज जो मैं देखता हूं वह है $css, $js, चर का उपयोग करके गंतव्यों को निर्दिष्ट करना। इनपुट निर्देशिकाओं के लिए, मुझे केवल $ SourcePath दिखाई देता है। क्या इसका मतलब है कि मुझे प्रत्येक जावास्क्रिप्ट, सीएसएस, छवि, आदि फ़ाइल के लिए एक अलग बंडल (और $sourcePath) बनाना है। यह एक बहुत सारी बंडल है! निश्चित रूप से एक ही बंडल में एकाधिक संपत्ति फ़ाइलों को शामिल करने का कोई तरीका है। क्या कोई मुझे दिखा सकता है?

उत्तर

2

अच्छी तरह से मेरा मानना ​​है कि "बंडल" का उद्देश्य आपको चेरी चुनने के लिए है कि आप कौन सी फाइलें चाहते हैं।

आपको प्रत्येक व्यक्तिगत फ़ाइल के लिए एक अलग बंडल बनाने की आवश्यकता नहीं है।

उदाहरण के लिए, मेरी सुपर सरल कस्टम AssetManager में मैं इस है:

namespace frontend\assets; 
use yii\web\AssetBundle; 
use yii\web\YiiAsset; 

class CustomAsset extends AssetBundle{ 
    public $basePath = '@webroot'; 
    public $baseUrl = '@web'; 
    public $css = [ 
     'css/custom.css', 
     'css/custom_modals.css' 
    ]; 
} 

के बाद से दो सीएसएस folders/files अपने प्रोजेक्ट के दृश्यपटल-भाग में स्थित है और CustomAsset वहाँ भी स्थित है, जब मैं रजिस्टर यह AssetManager यह $css सरणी के माध्यम से जाएगा और उन्हें हेडर सेक्शन में जोड़ देगा। यह $js सरणी के लिए समान है जो आपको जोड़ना होगा यदि आपको आवश्यकता होगी। साथ ही, बस याद रखें, फ़ाइलों को वेब-सुलभ फ़ोल्डर में होना चाहिए।

+3

हां, मेरा मूल प्रश्न Yii2 के शुरुआती दिनों में उभरा जब दस्तावेज़ बहुत खराब था। इसमें सुधार हुआ है, लेकिन एसेटमैनेजर पर दस्तावेज़ अभी भी खराब हैं। हालांकि, मैंने इसे समझ लिया है। वैसे, आपकी संपत्ति वेब सुलभ फ़ोल्डर में नहीं होनी चाहिए। AssetManager स्वचालित रूप से आपके प्रोजेक्ट में/वेब/संपत्ति फ़ोल्डर में उन्हें कॉपी (कॉपी) करेगा। मैं वास्तव में Asset.php फ़ाइलों के साथ अपनी मूल संपत्तियों को सामने \ संपत्ति में रखता हूं। – LarryTX

+0

कूल! टिप लैरी के लिए धन्यवाद! मैं नहीं जानता था कि। – Schwoebel

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