在 Laravel 8中使用控制器時,您可能會遇到儘管控制器存在且已定位,但仍顯示“錯誤“目標類控制器不存在””訊息
在Laravel 8中,命名空間不再自動作為路由組的前綴。因此,在定義沒有命名空間前綴的路由時,必須使用控制器的完全限定類別名稱。
選項1:完全限定類別名稱
在路由中使用控制器的完全限定類別名稱定義:
Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');
選項2:在路由組中定義命名空間
如果您喜歡前面的方法,請在AppProvidersRouteServiceProvider 中的相關路由組中明確定義命名空間:
Route::prefix('api') ->middleware('api') ->namespace('App\Http\Controllers') ->group(base_path('routes/api.php'));
選項3:取消註解RouteServiceProvider 中的命名空間(Laravel 8.0.2及更高版本)
在自版本8.0.2 以來的全新Laravel 8 安裝中,您可以取消註解AppProvidersRouteServiceProvider 中受保護的$namespace 變數:
// protected $namespace = 'App\Http\Controllers';附加說明
以上是Laravel 8「目標類別控制器不存在」:如何修復路由中的命名空間問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!