2015-05-23 7 views
5

में सबफ़ोल्डर के तहत नियंत्रकों को बनाने का उचित तरीका मैं इस समस्या के साथ परेशानी के लिए संघर्ष कर रहा हूं और मुझे यकीन नहीं है कि मैंने क्या गलत किया है। तो मामला इस तरह है। मैं एक नियंत्रक फ़ोल्डर बनाना चाहता था समूह को विभिन्न समूहों में अपने नियंत्रकों में जाना। डिफ़ॉल्ट laravel परियोजनाओं के आधार पर अपने फ़ोल्डर्स बनाने के बाद इसलार्वेल 5

Http 
--Controller 
----Auth 
----Folder_a 
----Folder_b 
----Folder_c 

की तरह कुछ बनाने के लिए इस

Http 
--Controller 
----Auth 

तो जैसे एक नियंत्रक फ़ोल्डर संरचना मैं करना चाहते हैं क्या बनाया जाता है, मेरी फ़ोल्डर में नियंत्रकों भी कर रहे हैं ठीक से तो

<?php namespace App\Http\Controllers\Folder_a; 

    /* 
    |-------------------------------------------------------------------------- 
    | Use the main controller to allow extend to the main controller 
    |-------------------------------------------------------------------------- 

    */ 

    use App\Http\Controllers\Controller; 

class SomethingController extends Controller { 
     /* Do something here*/ 
} 

तरह namespaced और अंत में मेरी routes.php में मैं इस तरह के

की तरह कार्रवाई फोन
Route::get('/action1/', array('as' => 'action1', 'uses' => '[email protected]')); 

लेकिन कुछ कैसे जब मैं उस साइट पर नेविगेट करने की कोशिश यह मुझे इस त्रुटि

ReflectionException in compiled.php line 1029: 
Class App\Http\Controllers\SomethingController does not exist 

देखा कि यह अभी भी डिफ़ॉल्ट फ़ोल्डर में जाने के अनुप्रयोग \ http \ नियंत्रकों नियंत्रक को खोजने के लिए \ लेकिन देता है अगर मैं ऐसा करें

Route::get('/action1/', array('as' => 'action1', 'uses' => 'Folder_a\[email protected]')); 

तब सब ठीक हो जाएगा ... मैंने इस मामले में क्या गलत किया है? मैंने संगीतकार डंप-ऑटोलोड को भी आजमाया है, कुछ भी नहीं बदला है।

उत्तर

6

आपने कुछ भी गलत नहीं किया है। यह अपेक्षित व्यवहार है! लार्वेल डिफ़ॉल्ट रूप से App\Http\Controllers के सापेक्ष निर्दिष्ट नियंत्रक की खोज करेगा। तो आपको वहां से नामस्थान निर्दिष्ट करना होगा।

Route::group(['namespace' => 'Folder_a'], function(){ 
    Route::get('/action1/', array('as' => 'action1', 'uses' => '[email protected]')); 
    // more routes 
}); 
+0

मैं देखता हूं ... चीजों को साफ़ करने में मेरी मदद करने के लिए बहुत बहुत धन्यवाद ... मैंने सोचा कि मुझे यहां कुछ और याद आया है ... चीयर्स दोस्त :) –

0

मैं फ़ोल्डर में समूह नियंत्रकों के लिए किसी भी आवश्यकता नहीं है नहीं लगता है: आप कई मार्गों कि एक नियंत्रक Folder_a में आप चीजों को साफ करने के लिए एक मार्ग समूह उपयोग कर सकते हैं करने के लिए नेतृत्व किया है। आपके पास प्रत्येक संसाधन के लिए अधिकतर 1 नियंत्रक होगा और प्रत्येक संसाधन अपनी ही चीज है। यदि आपके पास 50-100 नियंत्रक हैं तो कुछ भी गलत नहीं है। यदि आप उन्हें फ़ोल्डरों में डालते हैं, तो आप उन कई फ़ोल्डर्स के साथ समाप्त हो जाएंगे, इसलिए फ़ाइलों को घोंसले में मदद नहीं होगी।

सामान्य रूप से प्रारंभ करें और फिर आपको वास्तव में आवश्यकता होने पर रिफैक्टर करें।

+0

मैं वास्तव में उससे सहमत नहीं हूं। नियंत्रक हमेशा एक संसाधन या संसाधन को हमेशा संभाल नहीं पाते हैं। सबफ़ोल्डर आसानी से आते हैं जब आपके पास व्यवस्थापक (व्यवस्थापक \ उपयोगकर्ता नियंत्रक) के लिए कस्टम क्रियाएं होती हैं, इसलिए आपको एक नियंत्रक में प्रमाणीकरण मिडलवेयर के साथ गड़बड़ नहीं करना पड़ता है (वर्तमान उपयोगकर्ता के लिए कौन सी विधियों की अनुमति है, जो नहीं?)। एक और उदाहरण एपीआई एंडपॉइंट्स (एपीआई \ वी 1, एपीआई \ वी 2 इत्यादि) की संरचना है। ये फ़ोल्डर संरचनाएं अक्सर आपके मार्गों (/ admin/users,/api/v2) से मेल खाते हैं - मुझे एक अच्छी तरह व्यवस्थित ऐप संरचना की तरह दिखता है। लेकिन अक्सर इसके मामले में, यह आपके अनुप्रयोगों के आकार पर निर्भर करता है :) – tommy

+0

हाँ, आप सही हैं, शायद मुझे अपने उत्तर के साथ कुछ याद आया। मैं फ़ोल्डर_ए में एंट्रोलरर की तरह सोच रहा था, फ़ोल्डर_बी में बीकंट्रोलर शामिल है। यही कारण है कि मैंने सोचा कि यह एक बुरा विचार है – Ruffles

+0

हाँ आप सही हैं, उस स्थिति में यह अधिक समझ में नहीं आता है: पी – tommy

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