修正Laravel 8 中的「目標類控制器不存在」錯誤
使用Laravel 8 時,您可能會遇到以下錯誤:「目標類別[ApiRegisterController] 不存在。」這是由於Laravel 處理路由組中命名空間前綴的方式發生了變化。
在 Laravel 8 中,RouteServiceProvider 中的 $namespace 屬性(先前為控制器路由定義新增了前綴)現在設定為 null預設。這意味著在路由中引用控制器時必須使用完全限定的類別名稱。
要解決此問題,您有多種選擇:
使用完全限定的類別名稱:
在路由中使用控制器的完全限定類別名稱。例如:
Route::get('register', 'App\Http\Controllers\Api\RegisterController@register');
在路由組中定義命名空間前綴:
如果您喜歡舊方法,您可以在 RouteServiceProvider 中為路由組定義命名空間前綴。操作方法如下:
public function boot() { ... Route::prefix('api') ->middleware('api') ->namespace('App\Http\Controllers') ->group(base_path('routes/api.php')); ... }
設定$namespace 屬性:
雖然在某些資料中提到取消註解RouteServiceProvider 中的$namespace 屬性,但它只會影響URL產生actions 且不會自行將命名空間前綴新增至路由。
Laravel 更新8.0.2 及更高版本:
如果您從8.0.2 版本開始安裝了Laravel 8 的全新副本,則可以取消註釋RouteServiceProvider 中受保護的$namespace 成員變數以恢復到舊的行為。
記住,關鍵是為你的路由組定義一個命名空間前綴,根據你的喜好,你可以選擇上面提到的任何方法來修復Laravel 8 中出現“目標類控制器不存在”錯誤。
以上是如何修復 Laravel 8 中的「目標類別控制器不存在」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!