如何在 Laravel 8 中使用旧的 Laravel 路由风格

Pet*_*Amo 1 laravel laravel-routing laravel-5 laravel-8

我刚刚安装了 Laravel 8,在这个版本中,我必须像这样输入我的路线:

Route::get('/admin/panel', [App\Http\Controllers\Admin\PanelController::class, 'index']);
Run Code Online (Sandbox Code Playgroud)

但我习惯了 Laravel 5 的路线,如下所示:

Route::namespace('Admin')->prefix('admin')->group(function () {
    Route::get('/panel', 'Admin/PanelController@index');
});
Run Code Online (Sandbox Code Playgroud)

那么如何在 Laravel 8 版本中使用 Laravel 5 路由呢?

Unf*_*lux 5

如果您想继续使用定义路由的“旧”方式(即Controller@action),那么您可以这样做,但需要更改RouteServiceProvider以包含App\Http\Controllers名称空间。

这非常简单,在 Laravel 8 的最新版本中,这是取消注释以下行的简单情况:

protected $namespace = 'App\\Http\\Controllers';
Run Code Online (Sandbox Code Playgroud)

如果您使用的 Laravel 8 版本的文件中没有此行RouteServiceProvider,您可以升级您的 Laravel 版本或手动添加它。如果您手动添加该行,您还需要更新方法Route中的定义boot才能使用该$namespace属性。同样,这非常简单,只需将以下内容添加到webapi定义中即可:

->namespace($this->namespace)
Run Code Online (Sandbox Code Playgroud)

例如:

Route::middleware('web')
    ->namespace($this->namespace)
    ->group(base_path('routes/web.php'));
Run Code Online (Sandbox Code Playgroud)

那么你应该可以走了。