Php 如何将laravel 4请求路由到可变深度子目录
我正在尝试将我们定制的报告环境迁移到Laravel 4。 目前我们有超过200页的报告。出于组织上的原因,我们将它们放在一个扩展的目录结构中。报告目录如下所示:Php 如何将laravel 4请求路由到可变深度子目录,php,routing,laravel,laravel-4,Php,Routing,Laravel,Laravel 4,我正在尝试将我们定制的报告环境迁移到Laravel 4。 目前我们有超过200页的报告。出于组织上的原因,我们将它们放在一个扩展的目录结构中。报告目录如下所示: reports - main1 - sub1 - deep1 - deep2 - sub2 - deep3 - deeper4 .. etc 在最深层,将有一个控制器,其中包含要调用的方法。 我想使用像/reports/main1
reports
- main1
- sub1
- deep1
- deep2
- sub2
- deep3
- deeper4
.. etc
在最深层,将有一个控制器,其中包含要调用的方法。
我想使用像/reports/main1/sub1/deep1/action
这样的URL
如何设置将所有报告请求发送到正确控制器的路由?不幸的是,深度是可变的,使其变得复杂
编辑
我们不仅仅有可以通过id加载的报告查询,而是每个目标都是一个php文件,可以根据用户输入执行各种操作来呈现大量报告。这就是为什么要保持它的组织性,我们将所有内容都放在一个广泛的目录结构中。
我想问的是,是否有一种方法可以在目录树中路由到正确的控制器,而不必指定200条路径?我想我们需要更多关于URL(目录路径)在应用程序中如何运行的信息-听起来URL将指向特定的报告。每个报表都有一个ID,而报表标识符是URL路径 这里有一个答案: 您可以使用正则表达式来匹配可变长度路由
Route::get('reports/{path}', 'ReportsController@report')
->where('path', '[A-Za-z0-9\/\-\_]');
其中正则表达式与URL匹配,例如:
reports/some/much_deeper/path-7
您的控制器方法
报告($path)
将具有可用的$path
变量。谢谢。是的,我们目前有200个“主”php文件需要转换为200个控制器。虽然您让我考虑我们有多少标准的报表页,可以作为大报表控制器的属性加载。使用该正则表达式而不是不起作用的*通配符是个好主意。不幸的是,此解决方案不起作用,因为带有多个斜杠的路径没有被转发到ReportsController。您能告诉我不起作用的路径吗?我看看是否可以调整正则表达式。是的,不起作用。我正在尝试获取“usrimg/”之后的路径<代码>路由::get('usrimg/{imgname}',function($imgname){})->其中('imgname','[A-Za-z0-9\/\-\\\\\\])代码>与斜杠不匹配。是否无法将路径/到/报告
分隔为到报告的路径
(连字符)?我认为您可以用斜线重建路径,并在控制器中处理它。