2013-07-09 11 views
5

मैं अपना कस्टम सीएमएस बनाना चाहता हूं और मैं एक उपयोगकर्ता पैकेज बनाना चाहता हूं जिसमें मेरे पास showProfile() फ़ंक्शन के साथ नियंत्रक होगा। लेकिन समस्या यह है कि मैं आसानी से इस प्रोफाइल व्यू को संपादित करना चाहता हूं। इसलिए मैं जानना चाहता हूं कि कैस्केड व्यू बनाने का कोई तरीका है या नहीं। जैसे कि ऐप/दृश्य/में कोई फ़ाइल नहीं है, तो विक्रेता/विक्रेता/पैकेज/src/views लोड हो जाएंगे। मुझे आशा है कि आप इस विचार :)लार्वेल 4 पैकेज देखें ओवरराइड

संपादित मिल गया:

मैं यह काम कर लिया। मुझे अपने सेवा प्रदाता में विचारों के लिए नया नामस्थान पंजीकृत करना पड़ा। मैं ServiceProvider के लिए इस कोड डाल:

\View::addNamespace('cmscore',array(app_path()./'views/packages/zaalbarxx/cmscore'); 

कहाँ zaalbarxx/cmscore विक्रेता/पैकेज है और cmscore एक नाम स्थान मैं दृश्य की तरह नियंत्रक में बाद में उपयोग कर सकते हैं :: बनाने ('cmscore :: सूचकांक') है। मैंने इस कोड को boot() विधि में $ this-> पैकेज() से पहले जोड़ा है, इसलिए इस तरह ऐप/दृश्य पैकेज/दृश्यों पर प्राथमिकता दी जाती है। शानदार काम करता है।

+0

अच्छा खोज, पोस्ट करने के लिए धन्यवाद olution – fideloper

उत्तर

4

यह पहले से ही संभव है, हालांकि संरचना डिफ़ॉल्ट रूप से vendor/package-name/src/views में दिखाई देगी, लेकिन यदि app/views/packages/package-name/ में समकक्ष है तो चुना जाएगा।

2

जैसा कि कहा गया है, आप पहले से ही पैकेज दृश्य लोड करने में सक्षम होना चाहिए।

हालांकि, आप app/config/view.php में पाए गए सरणी में अधिक दृश्य स्थान जोड़ सकते हैं।

अतिरिक्त रूप से FileViewFinder कक्षा में addLocation() विधि के साथ रन-टाइम पर पथ जोड़े जा सकते हैं।

कि विधि है कि एक सेवा प्रदाता में कैसा दिखेगा का उपयोग करना:

$app['view.finder']->addLocation('/path/to/views'); 

या कहीं भी अपने अनुप्रयोग में:

App::make('view.finder')->addLocation('/path/to/views'); 

यह भी ध्यान रखें, मैं हाल ही में this question on cacheing view output उत्तर दिया, जो मदद कर सकता है आप देखते हैं कि कैसे यदि आप उस मार्ग पर जाने का विकल्प चुनते हैं तो व्यू पैकेज के कुछ हिस्सों को विस्तारित करना काम कर सकता है।

+0

ध्यान दें कि पैकेज दृश्य केवल 'ऐप/व्यू' के रूप में कैस्केड किया जा सकता है, क्योंकि इस स्थान को 'रोशनी \ समर्थन \ ServiceProvider :: पैकेज() 'से हार्ड-कोड किया गया है। – crynobone

+0

हां, मुझे कुछ पैकेज से दृश्य लोड करने में कोई समस्या नहीं है। लेकिन मैं पैकेज में बस साधारण दृश्य बनाना चाहता हूं और उसके बाद इसे ऐप/दृश्यों में स्थानांतरित करने और विस्तार करने की क्षमता है। या क्या मुझे पैकेज में दृश्य नहीं बनाना चाहिए और उपयोगकर्ता को इस प्रोफ़ाइल() नियंत्रक विधि का उपयोग करने के लिए ऐप/दृश्य में फ़ाइल बनाने के लिए मजबूर करना चाहिए? –

0

यदि आप laravel कोड को पढ़ने के लिए आपको लगता है कि इस में बनाया गया है देखेंगे, में इस व्यवहार को प्रोग्राम करने की जरूरत नहीं है ...

संकुल डिफ़ॉल्ट रूप से प्रथम में दिखेगा और app/views/packages/package-name/ (सभी लोअरकेस में ! अगर पैकेज या लेखक के पास कैप्स हैं! तो विंडोज़ पर अनजान हो जाता है और फिर लिनक्स पर आप दीवार के खिलाफ अपने सिर को टक्कर देंगे!)

और यदि ग्राहक ऐप व्यू मौजूद नहीं है तो पैकेज दृश्य पैकेज से ही लोड होंगे अंदर: vendor/author/package-name/src/views

+2

ध्यान दें कि कस्टम पथ '... पैकेज/पैकेज-नाम नहीं है ... 'बल्कि' ... पैकेज/विक्रेता/पैकेज-नाम ... '(** विक्रेता ** भाग नोट करें)।आप 'php artisan view: प्रकाशित विक्रेता/पैकेज' कमांड का उपयोग करके संशोधन के लिए पैकेज दृश्य प्रकाशित कर सकते हैं। डॉक्स: http://laravel.com/docs/4.1/packages#package-views –

+0

एक और गॉचा: 'view: publ' कमांड कभी-कभी शीर्षक केस में फ़ोल्डर बनाते हैं, उदा। 'एप्लिकेशन/विचारों/संकुल/विक्रेता/Package'। लेकिन यह सर्वर द्वारा उठाया नहीं जा सकता है और आपको फ़ोल्डर को '.../विक्रेता/पैकेज' में नाम बदलने की आवश्यकता हो सकती है। –

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