2013-05-28 15 views
0

我想在我的Routes文件中使用一些通配符,因为它变得太臃肿。比方说,我有一个照片和一个画廊路线,我决定找到他们下一个“媒体”,“subroute”:Laravel 3.x路由问题 - 使用通配符获取错误的参数值

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

模具和转储给我“”由acessing“http://www.bossplaya.dev/admin/media/galleries/edit/1”,而不是“画廊1“,如预期。

作品:

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

有没有使用这样的通配符的方法吗?这将节省我很多时间,并使我的路线文件更清洁。

任何想法?

回答

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')); 
}); 
+0

惊人!谢谢。 – darksoulsong