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

时间:2018-10-31 06:54:43

标签: laravel routing routes 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]+']);
});

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

注意::我还使用->where(['nickname' => '[a-z]+'])来路由组并收到错误消息。

错误消息:

  

调用成员函数where()为空

问题:

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

2 个答案:

答案 0 :(得分: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');
    });
});

More about Laravel routes here

答案 1 :(得分:0)

希望能为您带来帮助

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

});