【问题标题】:Laravel 3.x Routes issue - Getting wrong param value using wildcardLaravel 3.x 路由问题 - 使用通配符获取错误的参数值
【发布时间】:2013-05-23 20:28:34
【问题描述】:

我正在尝试在我的 Routes 文件中使用一些通配符,因为它变得过于臃肿。假设我有一张照片和一条画廊路线,我决定将它们定位在“媒体”“子路线”下:

Route::get('admin/media/(:any)/edit/(:num)', function($p) {
    dd($p);
});

模具和转储通过访问“http://www.bossplaya.dev/admin/media/galleries/edit/1”而不是“1”给了我“画廊”,正如预期的那样。

但是这有效:

Route::get('admin/media/galleries/edit/(:num)', function($p) {
    dd($p); // Returns "1"
});

有没有办法像这样使用通配符?这将节省我大量的时间,并使我的路线文件更干净。

有什么想法吗?

【问题讨论】:

    标签: routes laravel wildcard laravel-3


    【解决方案1】:

    您添加到 URL 的每个通配符都将成为您的路由中的一个参数,因此在此示例中,您会发现 $type 变为“画廊”,$id 变为“1”...

    Route::get('admin/media/(:any)/edit/(:num)', function($type, $id) {
        dd(compact('type', 'id'));
    });
    

    如果有任何原因您不想知道(:any) 是什么,那么您可以使用不匹配的正则表达式,例如:

    Route::get('admin/media/[^/]+/edit/(:num)', function($id) {
        dd(compact('id'));
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 2021-03-22
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多