Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将laravel 4请求路由到可变深度子目录_Php_Routing_Laravel_Laravel 4 - Fatal编程技术网

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

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

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

这里有一个答案:

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

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\/\-\\\\\\])与斜杠不匹配。是否无法将
路径/到/报告
分隔为
到报告的路径
(连字符)?我认为您可以用斜线重建路径,并在控制器中处理它。