laravel8更新之路由調整

原文地址:https://www.wjcms.net/archives/laravel8%E6%9B%B4%E6%96%B0%E4%B9%8B%E8%B7%AF%E7%94%B1%E8%B0%83%E6%95%B4

在Laravel的早期版本中,RouteServiceProvider包含一個$namespace屬性。該屬性的值將自動添加到控制器路由定義和對actionhelper /方法的調用之前。

image.png

在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';

關注我每天分享文章。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章