2

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

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

在最深的层次上,将有一个控制器,其中包含要调用的方法。我想使用像/reports/main1/sub1/deep1/action.

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

编辑

我们不仅有可以通过 id 加载的报告查询,而且每个目标都是一个 php 文件,它可以根据用户输入执行各种操作来呈现大量报告。这就是为什么要保持井井有条,我们将所有内容都放在一个广泛的目录结构中。我要问的是是否有一种方法可以在目录树中路由到正确的控制器而无需指定 200 条路径?

4

1 回答 1

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可用的变量。

于 2013-07-12T16:48:13.850 回答