Laravel 3.x路由问题 - 使用通配符获取错误的参数值

时间:2013-05-28 18:52:48

标签: routes laravel wildcard laravel-3

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

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

die和dump通过按照预期“http://www.bossplaya.dev/admin/media/galleries/edit/1”而不是“1”给我“画廊”。

但是这个有效:

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

有没有办法使用这样的通配符?这样可以节省很多时间,让我的路线文件更清晰。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您添加到网址的每个通配符都将成为路线中的参数,因此在此示例中,您会发现$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'));
});