MENU

# 02: 路由分组:中间件、子域名、路由前缀和命名空间

January 14, 2020 • Laravel 入门

对于拥有相似特征的路由(需要登录验证、相同命名空间、相同路由前缀等),可以使用「路由分组」功能将这些路由进行分组,从而提升真个路由表的可读性和可维护性。在路由分组中可定义一下共同特征:中间件、命名空间、路由前缀、路由名称前缀等。

例如以下这两条路由拥有多个相同的特征,我们可以把它们划到同一个路由组中:

Route::get('user/profile', 'User\ProfileController@show')->middleware('auth')->name('user.profile.show');
Route::put('user/profile', 'User\ProfileController@update')->middleware('auth')->name('user.profile.update');

中间件

对组中的所有路由分配中间件:

Route::middleware(['auth'])->group(function () {
    Route::get('user/profile', 'User\ProfileController@show')->name('user.profile.show');
    Route::put('user/profile', 'User\ProfileController@update')->name('user.profile.update');
});

命名空间

提取公共的命名空间:

Route::middleware(['auth'])->namespace('User')->group(function () {
    Route::get('user/profile', 'User\ProfileController@show')->name('user.profile.show');
    Route::put('user/profile', 'User\ProfileController@update')->name('user.profile.update');
});

路由前缀

提取公共的路由前缀:

Route::middleware(['auth'])->namespace('User')->prefix('user/profile')->group(function () {
    Route::get('', 'ProfileController@show')->name('user.profile.show');
    Route::put('', 'ProfileController@update')->name('user.profile.update');
});

路由名称前缀

提取公共的路由名称前缀:

Route::middleware(['auth'])->namespace('User')->prefix('user')->name('user.profile.')->group(function () {
    Route::get('profile', 'ProfileController@show')->name('show');
    Route::put('profile', 'ProfileController@update')->name('update');
});