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

时间:2013-07-12 15:41:28

标签: php routing laravel laravel-4

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

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

在最深层次上会有一个控制器,可以调用方法。 我想使用像/reports/main1/sub1/deep1/action这样的网址。

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

修改

我们不是简单地拥有可以通过id加载的报表查询,而是每个目标都是一个php文件,可以根据用户输入执行各种报表来呈现大量报表。这就是保持组织有序的原因,我们将所有内容放在一个广泛的目录结构中。 我要求的是,是否有办法在目录树中路由到正确的控制器而不必指定200个路径?

1 个答案:

答案 0 :(得分:1)

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

这是一个答案:

您可以使用正则表达式匹配可变长度路径。

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

该正则表达式匹配以下URL:

reports/some/much_deeper/path-7

您的控制器方法report($path)将提供$path变量。