有没有什么办法可以无限级抓取子页面的URL。我的应用程序允许任何用户创建任何级别的子页面。在我的页面表中,我有 parentID。
/{page}/{subpage} // this captures 2 level of pages
/{page} // this captures 1 level of page
我想捕获范围从
site.com/food/healthy/fruit/red/apple 到 site.com/fruit/organge 或 site.com/grapes 或 site.com/a/b/c/d/e/f/g/h/i/j 等。
什么是最有效的方法?
最佳答案
当然可以。不过,您需要在斜杠 /
上展开捕获的页面,然后从那里开始。
Route::any('{any}', function($pages)
{
$pages = explode('/', $pages);
// Do whatever...
})->where('any', '.*');
需要注意的几点:
- 这条路线应该放在最后,否则你将无法到达任何其他路线。
- 这绝对是一切,如果该页面不存在,您需要返回一个错误。
- 我在上面使用
Route::any
来捕获任何请求(POST
、GET
等),您可能想要将其限制为其中的一个子集或仅GET
,这取决于您。 - 正如下面的评论所指出的,您不能再使用
URL::route
帮助器,但您仍然可以使用URL::to
帮助器。这应该不是问题,因为您很可能将这些动态页面存储在数据库中,因此 URI 也应该存储在数据库中。
关于php - 如何在 Laravel 中创建具有无限子页面的路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22723984/