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 路由呢?
如果您想继续使用定义路由的“旧”方式(即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
属性。同样,这非常简单,只需将以下内容添加到web
和api
定义中即可:
->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)
那么你应该可以走了。