Ale*_*lex 6 laravel laravel-5.2
我有以下内容routes.php
:
Route::get('test/foo', 'TestController@index');
Route::get('test/bar', 'TestController@index');
Route::get('test/baz', 'TestController@index');
Run Code Online (Sandbox Code Playgroud)
我试图将此减少到以下内容:
Route::get(either 'test/foo' or 'test/bar' or 'test/baz', 'TestController@index');
Run Code Online (Sandbox Code Playgroud)
一种有用的文档方法是在路由中放置一个正则表达式约束:
Route::get('test/{uri}','TestController@index')->where('uri', 'regex for foo, bar, and baz...');
Run Code Online (Sandbox Code Playgroud)
但是,这个解决方案很难看.是不是有一种优雅的方式来表达
{uri} in foo,bar,baz
Run Code Online (Sandbox Code Playgroud)
用Laravel的语言?否则,正则表达式会是什么样子?
谢谢!
PS我已经读过这篇文章,但它不适用于我的3条路线.
hai*_*ran 12
我不确定你为什么说RegExr很难看.我基本上认为它是最强大的工具之一.
对于您的情况,我认为下面的代码片段可以完成这项工作:
Route::get('user/{name}', function ($name) {
//
})
->where('name', '(foo|bar|baz)');
该(foo|bar|baz)
RegExr将匹配任何这些字符串:"富","酒吧","巴兹".因此,如果您需要更多,只需添加垂直条并添加所需的字符串.