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

How to Use Regex to Route Prefix in Laravel?

简介:

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

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]+']);
});

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

注意:我也用了->where(['nickname' => '[a-z]+'])路由组,但是报错了。

错误信息:

Call to a member function where() on null

问题:

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

用这个希望对你有帮助

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');
    });

});

Route::groupattributes 参数。可用参数之一是 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');
    });
});

More about Laravel routes here