2015-02-13 9 views
11

मैं http://laravel.com/docs/5.0/commands के साथ पीछा कर रहा हूं और लैरवेल 5 में कारीगर कमांड बनाने में सक्षम हूं। लेकिन, मैं कारीगर कमांड कैसे बना सकता हूं और इसे पैकेज में पैकेज कर सकता हूं?लैरवेल 5 - पैकेज के लिए आर्टिसन कमांड बनाना

+0

कोई नया प्रोजेक्ट बनाएं और विक्रेता/laravel/रूपरेखा/src पर एक नज़र डालें/रोशन/प्रमाणीकरण/*, एक "कंसोल" फ़ोल्डर है जहां आप देख सकते हैं कि कैसे: auth कमांड काम करता है, और ऑथ फ़ोल्डर स्वयं एक पैकेज है, इसलिए, आप इसे उदाहरण के रूप में अनुसरण कर सकते हैं :)! – lcjury

उत्तर

28

आप कर सकते हैं और एक सेवा प्रदाता register() विधि में $this->commands() का उपयोग कर अंदर पैकेज आदेशों रजिस्टर करना चाहिए:

namespace Vendor\Package; 

class MyServiceProvider extends ServiceProvider { 

    protected $commands = [ 
     'Vendor\Package\Commands\MyCommand', 
     'Vendor\Package\Commands\FooCommand', 
     'Vendor\Package\Commands\BarCommand', 
    ]; 

    public function register(){ 
     $this->commands($this->commands); 
    } 
} 
+0

आपके उत्तर के लिए धन्यवाद। लेकिन मैं इसे अपनी कमांड फाइल में कैसे देख सकता हूं? उदाहरण के लिए, यदि मैं सभी कमांड फ़ाइलों को 'कमांड' फ़ोल्डर में डालता हूं, जहां कमांड फ़ोल्डर MyServiceProvider के उसी पथ पर है। मैं इसे कैसे लिंक कर सकता हूं? – user1995781

+2

सबसे पहले, आदेशों को स्वत: लोड किया जाना है। आम तौर पर, यदि आपके पैकेज में अन्य फाइलें काम करती हैं तो यह मामला होना चाहिए। (सुनिश्चित करें कि आदेश इसकी निर्देशिका के अनुरूप सही नामस्थान में हैं। यह 'नेमस्पेस विक्रेता \ पैकेज \ कमांड' जैसा कुछ होना चाहिए) फिर आपको केवल '$ कमांड' सरणी में इसके पूर्ण योग्य नाम के साथ इसका संदर्भ देना होगा। मेरे संपादित उत्तर की तरह ... – lukasgeiter

+1

यदि $ defferred = true सेट है तो आदेश कारीगर आउटपुट पर प्रकट नहीं होते हैं .. :( –

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