原文地址:https://www.wjcms.net/archives/laravel8更新之路由調整
在Laravel的早期版本中,RouteServiceProvider包含一個$namespace屬性,該屬性的值將自動添加到控制器路由定義和對actionhelper /方法的呼叫之前,

在Laravel 8.x中,默認情況下為此屬性,這意味著Laravel不會自動命名空間前綴,因此,在新的Laravel 8.x應用程式中,應使用標準的PHP可呼叫語法定義控制器路由定義:URL::actionnull

被注釋掉了,
所以在laravel8中加載路由需要加上命名空間,如下,
use App\Http\Controllers\Admin\AdminController;
Route::get('/admin', [AdminController::class, 'index']);
或者也可以
use App\Http\Controllers\Admin;
# 注:這里第二個引數是陣列
Route::get('/admin', [Admin\AdminController::class, 'index']);
如果是資源路由,則要:
# 注意這里第二個引數是類,字串,不要傳陣列
Route::resource('/admin', Admin\AdminController::class);
對action相關方法的呼叫應使用相同的可呼叫語法:
action([Admin\AdminController::class, 'index']);
return Redirect::action([Admin\AdminController::class, 'index']);
注意
如果您更喜歡Laravel 7.x樣式控制器的路由前綴,則可以簡單地將$namespace屬性添加到應用程式的中RouteServiceProvider,
路徑為:
app/Providers/RouteServiceProvider.php
找到該檔案,將被注釋的一行代碼取消注釋即可使用之前版本的自動載入命名空間的寫法,29行
// protected $namespace = 'App\\Http\\Controllers';
關注我每天分享文章,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/168054.html
標籤:其他

