我正在尝试将我们定制的报告环境迁移到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
变量。