आप Laravel 8 का उपयोग कर रहे हैं। Laravel 8 की एक ताज़ा स्थापना में, आपके रूट समूहों पर कोई नामस्थान उपसर्ग लागू नहीं किया जा रहा है जिससे आपके रूट लोड किए गए हैं।
"लारवेल के पिछले रिलीज में, RouteServiceProviderएक $namespaceसंपत्ति थी। इस संपत्ति का मूल्य स्वचालित रूप से नियंत्रक मार्ग परिभाषाओं और actionसहायक / कॉल पर उपसर्ग किया जाएगा URL::action। लारवेल 8.x में, यह संपत्ति nullडिफ़ॉल्ट रूप से है। इसका मतलब है कि कोई स्वचालित स्वचालित उपसर्ग नहीं है। लारवेल द्वारा किया जाएगा। ” Laravel 8.x डॉक्स - नोट्स जारी करें
जब नामस्थान उपसर्ग का उपयोग नहीं कर रहे हों तो आपको अपने मार्गों में उनका संदर्भ देते समय अपने नियंत्रकों के लिए पूरी तरह से योग्य वर्ग नाम का उपयोग करना होगा।
use App\Http\Controllers\UserController;
Route::get('/users', [UserController::class, 'index']);
Route::get('/users', 'App\Http\Controllers\UserController@index');
यदि आप पुराने तरीके से पसंद करते हैं:
App\Providers\RouteServiceProvider:
public function boot()
{
...
Route::prefix('api')
->middleware('api')
->namespace('App\Http\Controllers')
->group(base_path('routes/api.php'));
...
}
किसी भी रूट समूह के लिए ऐसा करें, जिसके लिए आप एक घोषित नाम स्थान चाहते हैं।
$namespaceसंपत्ति:
हालाँकि रिलीज़ नोट में $namespaceआपके द्वारा सेट की गई संपत्ति का RouteServiceProviderउल्लेख है और आपकी टिप्पणी में RouteServiceProviderइसका आपके मार्गों पर कोई प्रभाव नहीं पड़ता है। यह वर्तमान में क्रियाओं के लिए URL बनाने के लिए केवल एक नामस्थान उपसर्ग जोड़ने के लिए है। तो आप इस चर को सेट कर सकते हैं, लेकिन यह स्वयं इन नामस्थान उपसर्गों को नहीं जोड़ेगा, फिर भी आपको यह सुनिश्चित करना होगा कि आप इस चर का उपयोग मार्ग समूहों में नामस्थान जोड़ते समय करेंगे।
यह जानकारी अब अपग्रेड गाइड में है
Laravel 8.x डॉक्स - अपग्रेड गाइड - रूटिंग
अपग्रेड गाइड जिस महत्वपूर्ण भाग को दिखा रहा है, वह यह है कि आप अपने मार्गों के समूहों के नाम स्थान को परिभाषित कर रहे हैं। केवल$namespace स्वयं द्वारा चर सेट करना URL को क्रियाओं को उत्पन्न करने में मदद करता है।
फिर, और मैं इसे पर्याप्त तनाव नहीं दे सकता, महत्वपूर्ण हिस्सा रूट समूहों के लिए नामस्थान सेट कर रहा है, जो कि वे केवल $namespaceउदाहरण में सीधे सदस्य चर को संदर्भित करके कर रहे हैं ।
अपडेट करें:
यदि आपने संस्करण 8.0.2 के बाद से लारवेल 8 की एक नई प्रतिलिपि स्थापित की है, तो आप पुराने तरीके से वापस जाने के लिए सदस्य चर laravel/laravelको अनसुना कर सकते हैं, क्योंकि समूहों के लिए नामस्थान के लिए इस सदस्य चर का उपयोग करने के लिए मार्ग समूह सेटअप हैं।protected $namespaceRouteServiceProvider
केवल एक ही कारण है कि मार्गों को सौंपे गए नियंत्रकों में नामस्थान उपसर्ग जोड़ देगा क्योंकि मार्ग समूह इस चर को नामस्थान के रूप में उपयोग करने के लिए सेटअप हैं:
...
->namespace($this->namespace)
...
Apiफ़ोल्डर के अंदर आपका नियंत्रक है ।?