我正在尝试在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"
});
有没有办法使用这样的通配符?这样可以节省很多时间,让我的路线文件更清晰。
有什么想法吗?
答案 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'));
});