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

时间:2014-03-28 22:05:05

标签: php laravel laravel-4

有没有办法捕获无限级别的子页面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等。

最有效的方式是什么?

1 个答案:

答案 0 :(得分:6)

当然有可能。您需要在斜杠/上展开捕获的页面,然后从那里开始。

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

    // Do whatever...
})->where('any', '.*');

要注意的一些事项:

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