我正在尝试将自定义构建的报告环境迁移到Laravel 4。 目前,我们有200多个报告页面。出于组织原因,我们将它们放在一个广泛的目录结构中。 reports目录如下所示:
reports
- main1
- sub1
- deep1
- deep2
- sub2
- deep3
- deeper4
.. etc
在最深层次上会有一个控制器,可以调用方法。
我想使用像/reports/main1/sub1/deep1/action
这样的网址。
如何设置将所有报告请求发送到正确控制器的路由?不幸的是,深度是变化的,使其变得复杂。
修改
我们不是简单地拥有可以通过id加载的报表查询,而是每个目标都是一个php文件,可以根据用户输入执行各种报表来呈现大量报表。这就是保持组织有序的原因,我们将所有内容放在一个广泛的目录结构中。 我要求的是,是否有办法在目录树中路由到正确的控制器而不必指定200个路径?
答案 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
变量。