知道 Codeigniter 中的控制器名称

Posted

技术标签:

【中文标题】知道 Codeigniter 中的控制器名称【英文标题】:Know controller name in Codeigniter 【发布时间】:2018-06-30 23:07:52 【问题描述】:

对于我的 Codeigniter (v 3.1.7) 项目,我创建调试菜单(如 prestashop),其中包含登录用户的所有信息、页面错误...以快速调试页面。

所以,我想调用控制器的名称和函数的名称。 如果我在“登录”页面上,我想显示:

Controller: Account
Function: Login

我在this post 上找到了针对我的问题的提示,但我们使用 Url REWRITING 并且 url 的名称不是控制器的真实名称。

【问题讨论】:

__CLASS__ php 关键字呢? echo __CLASS__; //MyController 查看route.php 中的application/config 中定义的所有路由 How to get Controller, Action, URL informations with CodeIgniter的可能重复 【参考方案1】:

如果你的 CI 版本低于 3,你必须这样使用:

$this->router->fetch_class();
$this->router->fetch_method();

如果您的 CI 版本是 3 或更高版本。这些方法已弃用。

$this->router->fetch_class();
$this->router->fetch_method();

您可以改为访问属性。

$this->router->class;
$this->router->method;

见codeigniter user guide

URI 路由方法 fetch_directory()、fetch_class()、fetch_method() 使用属性 CI_Router::$directory、CI_Router::$class 和 CI_Router::$method 是公共的,并且它们各自的 fetch_*() 不再做任何其他事情来返回属性 - 保留它们没有意义。

这些都是内部的、未记录的方法,但我们选择暂时弃用它们以保持向后兼容性以防万一。如果你们中的一些人已经使用了它们,那么您现在可以直接访问这些属性:

$this->router->directory;
$this->router->class;
$this->router->method;

【讨论】:

【参考方案2】:

您可以使用 URI 类来获取该信息:

$this->uri->segment(n); // n=1 for controller, n=2 for method, etc

【讨论】:

以上是关于知道 Codeigniter 中的控制器名称的主要内容,如果未能解决你的问题,请参考以下文章

如何从 CodeIgniter 中的 URL 中删除控制器和函数名称

使用bootstrap在codeigniter中进行分页

如何将图像路径和名称上传到数据库 - Codeigniter

无法将变量从控制器传递到模型以处理codeigniter中的多个上载字段

CodeIgniter - 如何路由具有其他名称的控制器?

我该如何解决这个“找不到对象!” CodeIgniter-4 中的错误?