如何使用相同的控制器方法对多个路由进行分组?

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将匹配任何这些字符串:"富","酒吧","巴兹".因此,如果您需要更多,只需添加垂直条并添加所需的字符串.