如何在 Laravel 中使用正则表达式路由前缀?
Posted
技术标签:
【中文标题】如何在 Laravel 中使用正则表达式路由前缀?【英文标题】:How to Use Regex to Route Prefix in Laravel? 【发布时间】:2019-04-04 07:04:33 【问题描述】:简介:
我有一个带有动态前缀的自定义路由组:
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]+'])
来路由组,结果报错了。
错误信息:
在 null 上调用成员函数 where()
问题:
如何解决只检查一次的问题?
【问题讨论】:
【参考方案1】:使用这个希望它会帮助你
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');
);
);
【讨论】:
我先尝试了这个方法,然后问了一个问题。 @Shaielndra Gupta 当前方法返回Call to a member function where() on null
【参考方案2】:
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
【讨论】:
以上是关于如何在 Laravel 中使用正则表达式路由前缀?的主要内容,如果未能解决你的问题,请参考以下文章