【问题标题】:How to get Codeigniter all routes?如何获得 Codeigniter 所有路线?
【发布时间】:2020-03-24 00:56:17
【问题描述】:

这个问题不是codeigniter get all declared routes的重复问题

我必须为所有控制器获取我的所有 CodeIgniter 框架路由。我还没有在routes.php下定义任何路由,我只是使用类似的路由

https://domain/controller/action

现在我想得到我的所有路线

https://domain/user/login

https://domain/user/logout 

等等……

有什么办法可以得到我所有的路线吗?

希望你明白我想说的话!

【问题讨论】:

  • 据我了解,您想阅读所有应用程序控制器操作吗?
  • @B.K right 你能帮我实现这个目标吗??
  • 你有没有尝试过?
  • 是的,我找到了一种从特定控制器获取所有路由的方法,尝试了一些可以为我提供来自所有控制器的所有路由的方法

标签: php codeigniter routes


【解决方案1】:

如果我没有错,请纠正我。您想获取给定类的所有方法和/或所有类及其在给定控制器目录中的方法。

这样您将拥有application/controllers/User.php say 的所有可用路线

您可以通过以下方式达到同样的效果。

您可以使用 Gist here 源代码中名为 List.php 的 Codeigniter 库

您可以使用此库列出所有控制器和方法。

用法

您可以获取如下控制器列表

function index()
{
        //  Fetch list of controllers 

        $endpoints  =   array_keys($this->lists->getControllers());

        print_r($endpoints);


}

您可以获取任何给定控制器中的方法列表,如下所示:

function list_routes($endpoint='')
{
        if($endpoint=='')
            {
                die('Error');
            }

            $endpoint =     ucfirst($endpoint);
            $methods  =     $this->lists->getControllers();

            print_r($methods);
}

如果您想将默认文件夹从/controllers/ 更改为其他任何内容,您可以修改List.php 函数以扩展并将动态参数传递给setControllers 函数

foreach(glob(APPPATH . 'YOUR_FOLDER_HERE') as $controller) {
    ###
}

我正在使用上述解决方案来获取和自动化一些 API 文档,其中我获取所有端点和路由以及 cmets 以显示在我们的开发人员面板中。

如果对此有任何疑问或问题,请随时与我联系。

【讨论】:

  • 是的,它非常适合普通 CI 但我使用的是 CI HMVC 所以它没有按我的意愿工作。因此,我对您的代码进行了一些修改,并且在大多数情况下它都对我有用,但是如果我扩展 MX_Controller 代替 CI_controller 它的中断并给出致命错误“无法声明类 CI,因为该名称已在使用中”,则会出现一个问题'
  • 他在 $this->CI->load->file($subdircontroller); 上抛出错误有没有办法加载扩展 MX_Controller 的文件?
猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 2016-05-09
  • 2021-02-09
  • 1970-01-01
  • 2012-11-03
  • 2020-08-04
相关资源
最近更新 更多