我的 routes.php
中有以下内容:
Route::get('test/foo', 'TestController@index');
Route::get('test/bar', 'TestController@index');
Route::get('test/baz', 'TestController@index');
我试图将其减少到以下几点:
Route::get(either 'test/foo' or 'test/bar' or 'test/baz', 'TestController@index');
一 documented approach这将在这里适用,是对路线放置一个正则表达式约束:
Route::get('test/{uri}','TestController@index')->where('uri', 'regex for foo, bar, and baz...');
然而,这个解决方案会很丑陋。难道没有一种优雅的方式来表达
{uri} in foo,bar,baz
用 Laravel 的语言?否则,正则表达式会是什么样子?
谢谢!
附言我已阅读 this ,但它不适用于我有 3 条路线的情况。
最佳答案
我不知道你为什么说 RegEx 是丑陋的。我基本上认为 RegEx 是最强大的工具之一。
在你的情况下,我认为下面的代码片段应该可以完成这项工作:Route::get('user/{name}', function ($name) { // }) ->where('name', '(foo|bar|baz)');
(foo|bar|baz)
RegExr 将匹配以下任何字符串:'foo'、'bar'、'baz'。因此,如果您需要更多,只需添加管道( |
)并添加所需的字符串。
关于laravel - 如何使用相同的 Controller 方法对多个路由进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38886622/