下面由Laravel教程欄目給大家介紹laravel8更新之路由調(diào)整,希望對大家有所幫助!
在Laravel的早期版本中,RouteServiceProvider包含一個$namespace屬性。該屬性的值將自動添加到控制器路由定義和對actionhelper /方法的調(diào)用之前。
在Laravel 8.x中,默認情況下為此屬性。這意味著Laravel不會自動命名空間前綴。因此,在新的Laravel 8.x應(yīng)用程序中,應(yīng)使用標(biāo)準(zhǔn)的PHP可調(diào)用語法定義控制器路由定義:URL::actionnull
被注釋掉了。
所以在laravel8中加載路由需要加上命名空間,如下。
use AppHttpControllersAdminAdminController; Route::get('/admin', [AdminController::class, 'index']);
或者也可以
use AppHttpControllersAdmin; # 注:這里第二個參數(shù)是數(shù)組 Route::get('/admin', [AdminAdminController::class, 'index']);
如果是資源路由,則要:
# 注意這里第二個參數(shù)是類,字符串,不要傳數(shù)組 Route::resource('/admin', AdminAdminController::class);
對action相關(guān)方法的調(diào)用應(yīng)使用相同的可調(diào)用語法:
action([AdminAdminController::class, 'index']); return Redirect::action([AdminAdminController::class, 'index']);
注意
如果您更喜歡Laravel 7.x樣式控制器的路由前綴,則可以簡單地將$namespace屬性添加到應(yīng)用程序的中RouteServiceProvider。
路徑為:
app/Providers/RouteServiceProvider.php
找到該文件,將被注釋的一行代碼取消注釋即可使用之前版本的自動載入命名空間的寫法。29行
// protected $namespace = 'App\Http\Controllers';
推薦學(xué)習(xí):《laravel視頻教程》