知道 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 中删除控制器和函数名称
如何将图像路径和名称上传到数据库 - Codeigniter