我剛剛安裝了 Laravel 8,在這個版本中,我必須像這樣輸入我的路線:
Route::get('/admin/panel', [App\Http\Controllers\Admin\PanelController::class, 'index']);
但我習慣了 Laravel 5 路由,看起來像這樣:
Route::namespace('Admin')->prefix('admin')->group(function () {
Route::get('/panel', 'Admin/PanelController@index');
});
那么如何在 Laravel 8 版本中使用這個 Laravel 5 路由呢?
uj5u.com熱心網友回復:
您仍然可以使用它進行某種擴展(例如,對路由進行分組和添加前綴),但是因為您使用的是 FQCN,所以命名空間是多余的。使用“新”路由替代“舊”路由的主要優勢是重構。當您使用支持重構(如 PhpStorm)的 IDE 移動或重命名控制器時,您無需手動更改控制器的名稱和組命名空間。
在 Laravel 5 中,您也可以使用此路由表示法,但檔案中沒有概述。
要獲得類似的感覺,請匯入命名空間并僅使用您的類名并洗掉定義中的命名空間組。
use App\Http\Controllers\Admin\PanelController;
Route::prefix('admin')->group(function () {
Route::get('panel', [PanelController::class, 'index']);
});
如果您不能接受定義路線的新方式,請取消對$namespace屬性的注釋,app/Providers/RouteServiceProvider.php然后您又回到舊方式。
uj5u.com熱心網友回復:
如果您想繼續使用定義路由的“舊”方式(即Controller@action),那么您可以這樣做,但您需要更改RouteServiceProvider以包含App\Http\Controllers命名空間。
這是非常直接的,并且在 Laravel 8 的更新版本中,取消注釋以下行的簡單情況:
protected $namespace = 'App\\Http\\Controllers';
如果您使用的 Laravel 8 版本在RouteServiceProvider檔案中沒有這一行,您可以升級您的 Laravel 版本或手動添加它。如果您手動添加該行,您還需要更新方法中的Route定義boot以使用該$namespace屬性。同樣,這非常簡單,只需將以下內容添加到web和api定義中:
->namespace($this->namespace)
例如:
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
那么你應該很高興去。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/394012.html
標籤:拉拉维尔 laravel-5 laravel-8 laravel 路由
上一篇:Laravel同時插入資料庫
