Php 如何在Laravel中创建具有无限子页面的路由?
是否有任何方法可以捕获子页面的无限级别URL。我的应用程序允许任何用户创建任何级别的子页面。在我的页面表中,我有parentIDPhp 如何在Laravel中创建具有无限子页面的路由?,php,laravel,laravel-4,Php,Laravel,Laravel 4,是否有任何方法可以捕获子页面的无限级别URL。我的应用程序允许任何用户创建任何级别的子页面。在我的页面表中,我有parentID /{page}/{subpage} // this captures 2 level of pages /{page} // this captures 1 level of page 我想捕获从 site.com/food/health/fruit/red/apple到site.com/fruit/organge或site.com/grapes或site.com/
/{page}/{subpage} // this captures 2 level of pages
/{page} // this captures 1 level of page
我想捕获从
site.com/food/health/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也应该存储在数据库中+1,非常好的技巧,它只计算一个参数,但分解将其转换为数组。是的,它将所有参数捕获到单个字符串中,这就是为什么必须分解它才能获得单个页面参数的原因。这就是为什么必须最后定义它,否则它将在其他路由有机会之前匹配任何请求。先进先出。如果
OP
想要使用URL
类创建路由怎么办?他将如何传递参数,这可能吗?可能不是因为路由不匹配。我想这是它的一个限制,您不能使用URL::route
。但是,您仍然可以使用URL::to
,并且由于这些页面看起来是动态创建的,因此此类页面的URI很可能存储在数据库中,因此使用URL::to
应该不会有问题。我将更新我的答案,并将其列为需要注意的事项。谢谢Jason,在此之后,我将有一个包含[食物、健康、水果、红色、苹果]等参数的数组。如何使用parentID从数据库中的多级或分层页面在控制器中创建URL结构?比如site.com/food/health/fruit/red/apple,其中食品是健康之母,健康是水果之母等等。我如何确保红色真的是苹果的母体,水果真的是红色的母体等等。