如何使用正则表达式在Laravel中路由前缀?

And*_*ter 3 routing routes laravel laravel-routing laravel-5.7

简要:

我有一个带有动态前缀的自定义路由组:

Route::prefix('{nickname}')->group(function () {
    Route::get('/', function($nickname) {
        return view('profile');
    })->where(['nickname' => '[a-z]+']);

    Route::get('/edit', function($nickname) {
        return view('profile.edit');
    })->where(['nickname' => '[a-z]+']);
});
Run Code Online (Sandbox Code Playgroud)

如您所见,在每条路线上,我通过正则表达式检查前缀的正确性.

注意:我也习惯->where(['nickname' => '[a-z]+'])路由组并出错.

错误信息:

调用一个成员函数where()on null

题:

如何只检查一次才能解决问题?

Egr*_*tos 5

Route::group有参数attributes.其中一个可用的参数是where.

Route::group([
    'prefix' => '{nickname}',
    'where' => ['nickname' => '[a-z]+']
], function ($nickname) {
    Route::get('/', function($nickname) {
        return view('profile');
    });
    Route::get('/edit', function($nickname) {
        return view('profile.edit');
    });
});
Run Code Online (Sandbox Code Playgroud)

更多关于Laravel路线这里