【问题标题】:multiple routes in single Route::get() call Laravel 4单个 Route::get() 中的多个路由调用 Laravel 4
【发布时间】:2013-07-03 14:13:37
【问题描述】:

在 Laravel 4 中定义路由时,是否可以在同一路由中定义多个 URI 路径?

目前我做了以下工作:

Route::get('/', 'DashboardController@index');
Route::get('/dashboard', array('as' => 'dashboard', 'uses' => 'v1\DashboardController@index'));

但这违背了我的目的,我想做类似的事情

Route::get('/, /dashboard', array('as' => 'dashboard', 'uses' => 'DashboardController@index'));

【问题讨论】:

  • 就个人而言,出于 SEO 和简单的目的,我更愿意将 / 重定向到 /dashboard(反之亦然),为什么有两个显示完全相同内容的 url?
  • @Alexandre Danault 在某些情况下,您希望(稍微)根据路由改变视图的内容,但同时,使用单个控制器处理请求(即不要在 3 种不同的控制器方法中重复整个逻辑)。

标签: php laravel laravel-4


【解决方案1】:

我相信您需要使用带有正则表达式的可选参数:

Route::get('/{name}', array(
     'as' => 'dashboard', 
     'uses' => 'DashboardController@index')
    )->where('name', '(dashboard)?');

* 假设您想路由到同一个控制器,这从问题中并不完全清楚。

* 当前接受的答案不仅匹配//dashboard 的所有内容。

【讨论】:

  • 2 年后,这个问题仍然有意义。但是,是否可以通过两条以上的路线处理案件?例如:与“/”、“/dashboard”和“/home”相同的控制器?我们可以进一步将可选参数限制为“home”和“dashboard”吗?
  • @Alex 问题是相关的。目前有解决办法吗?
【解决方案2】:

出于好奇,我发现尝试解决这个question posted by @Alex 作为评论under @graemec 的回答以发布有效的解决方案很有趣:

Route::get('/{name}', [
    'as' => 'dashboard', 
    'uses' => 'DashboardController@index'
  ]
)->where('name', 'home|dashboard|'); //add as many as possible separated by |

因为 where() 的第二个参数需要正则表达式,所以我们可以将它分配给 完全 任何由 | 分隔的参数,所以我最初的想法是在 Laravel 路由中提出 whereIn()已通过此解决方案解决。

PS:本示例在 Laravel 5.4.30 上测试

希望有人觉得它有用

【讨论】:

    【解决方案3】:

    如果我理解你的问题,我会说:

    使用路由前缀http://laravel.com/docs/routing#route-prefixing

    (可选)路由参数http://laravel.com/docs/routing#route-parameters

    例如:

    Route::group(array('prefix' => '/'), function() { Route::get('dashboard', 'DashboardController@index'); });
    

    Route::get('/{dashboard?}', array('as' => 'dashboard', 'uses' => 'DashboardController@index'));
    

    【讨论】:

    • 第二个示例将匹配任何 uri,例如/foo这个答案是错误的
    • 非常感谢。就我而言,其中一条路由传递了一个空参数,将我发送到具有相同前缀的另一条路由。如果参数是我想要的初始路由的后缀,我已经开始检查第二条路由,然后重定向……但是可选参数救了我,现在执行进入正确的路由……
    猜你喜欢
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 2023-03-13
    • 2013-10-06
    • 2014-09-24
    • 2014-06-08
    • 2014-12-15
    • 2013-11-08
    相关资源
    最近更新 更多