如何将laravel4请求路由到可变深度子目录


how to route laravel 4 requests to variable depth sub directories

我正在尝试将我们定制的报告环境迁移到Laravel 4。目前,我们有200多个报告页面。出于组织原因,我们将它们放在一个广泛的目录结构中。报告目录如下所示:

reports
  - main1
      - sub1
         - deep1
         - deep2
      - sub2
         - deep3
            - deeper4
.. etc

在最深层次上,将有一个带有可调用方法的控制器。我想使用类似/reports/main1/sub1/deep1/action的URL。

如何设置将所有报告请求发送到正确控制器的路由?不幸的是,深度是可变的,使其变得复杂。

编辑

我们不仅仅有可以通过id加载的报告查询,每个目的地都是一个php文件,它可以根据用户输入做各种事情来呈现许多报告。这就是为什么为了保持它的组织性,我们将所有内容都放在一个广泛的目录结构中。我想问的是,是否有一种方法可以在不指定200条路径的情况下路由到目录树中的正确控制器?

我认为我们需要更多关于URL(目录路径)在应用程序中如何运行的信息——听起来URL会指向特定的报告。每个报告只有一个ID,而报告标识符是URL路径?

这里有一个答案:

您可以使用regex来匹配可变长度的路由。

Route::get('reports/{path}', 'ReportsController@report')
    ->where('path', '[A-Za-z0-9'/'-'_]');

其中正则表达式匹配URL,如:

reports/some/much_deeper/path-7

您的控制器方法report($path)将有可用的$path变量。