laravel - 如何使用相同的 Controller 方法对多个路由进行分组?

标签 laravel laravel-5.2

我的 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/

相关文章:

Laravel 4 - 提取路由、迭代和测试

laravel - 如何在laravel nova中为一个字段添加自定义验证和消息

php - 如何使用带有 GET 方法的 Laravel 表单在 URL 中以加密格式传递 GET 参数?

php - Laravel 5.2 - 更改从 Eloquent 获取的数据格式

laravel - 动态回调 url laravel

laravel - 如何在 Eloquent Laravel 关系中获得另一个总和的总和

php - laravel中获取当前登录用户的数据

mysql - 网络和数据库关系基础设施

php - laravel 安装错误 : mbstring not found

laravel - 如何在迁移中定义外键?