0

我正在尝试在我的 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"
});

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

有任何想法吗?

4

1 回答 1

1

您添加到 URL 的每个通配符都将成为您的路由中的一个参数,因此在此示例中,您会发现$type变成 'galleries' 并$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'));
});
于 2013-05-29T10:19:05.357 回答