如何在Laravel中创建无限子页面的路由?

Nav*_*avi 2 php laravel laravel-4

有没有办法捕获无限级别的子页面URL.我的应用程序允许任何用户创建任何级别的子页面.在我的页面表中,我有parentID.

/{page}/{subpage} // this captures 2 level of pages
/{page} // this captures 1 level of page
Run Code Online (Sandbox Code Playgroud)

我想要捕获范围从的所有URL

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等等.

什么是最有效的方式?

Jas*_*wis 6

当然有可能.你需要在斜杠上爆炸捕获的页面/然后从那里开始.

Route::any('{any}', function($pages)
{
    $pages = explode('/', $pages);

    // Do whatever...
})->where('any', '.*');
Run Code Online (Sandbox Code Playgroud)

有几点需要注意:

  1. 此路线应放在最后,否则您将无法击中任何其他路线.
  2. 这绝对捕获了所有内容,如果页面不存在,您将需要返回错误.
  3. Route::any在上面使用捕获任何请求(POST,GET等),您可能希望将其限制为那些或仅限于此的子集GET,这取决于您.
  4. 正如下面的评论中所指出的,您不能再使用URL::route帮助程序,但您仍然可以使用URL::to帮助程序.这应该不是问题,因为它很可能是将这些动态页面存储在数据库中,因此URI也应该存储在数据库中.