CodeIgniter:如何获取Controller,Action,URL信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CodeIgniter:如何获取Controller,Action,URL信息相关的知识,希望对你有一定的参考价值。
我有这些网址:
如何从这些URL获取控制器名称,操作名称。我是CodeIgniter的新手。是否有任何帮助函数来获取此信息
例如:
$params = helper_function( current_url() )
$params
变得类似的地方
array (
'controller' => 'system/settings',
'action' => 'edit',
'...'=>'...'
)
你可以使用URI Class:
$this->uri->segment(n); // n=1 for controller, n=2 for method, etc
我也被告知以下工作,但我目前无法测试:
$this->router->fetch_class();
$this->router->fetch_method();
$this->router->fetch_class();
//获取类控制器中的类$ this-> router-> fetch_method();
// 方法
控制器类没有任何功能。
所以我建议您使用以下脚本
global $argv;
if(is_array($argv)){
$action = $argv[1];
$method = $argv[2];
}else{
$request_uri = $_SERVER['REQUEST_URI'];
$pattern = "/.*?/index.php/(.*?)/(.*?)$/";
preg_match($pattern, $request_uri, $params);
$action = $params[1];
$method = $params[2];
}
您应该这样做,而不是使用URI段:
$this->router->fetch_class(); // class = controller
$this->router->fetch_method();
这样,即使您位于路由URL,子域等后面,您也知道始终使用正确的值。
这些方法已弃用。
$this->router->fetch_class();
$this->router->fetch_method();
您可以改为访问属性。
$this->router->class;
$this->router->method;
URI Routing methods 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;
其他方式
$this->router->class
作为补充
$this -> router -> fetch_module(); //Module Name if you are using HMVC Component
更新
答案是在2015年添加的,现在已弃用以下方法
$this->router->fetch_class(); in favour of $this->router->class;
$this->router->fetch_method(); in favour of $this->router->method;
您好,您应该使用以下方法
$this->router->fetch_class(); // class = controller
$this->router->fetch_method(); // action
为了这个目的但是为了使用它你需要从CI_Controller
扩展你的钩子它就像一个魅力,你不应该使用uri段
如果您使用$ this-> uri-> segment,如果URL重写规则发生更改,则段名称匹配将丢失。
在课堂或图书馆的任何地方使用本规范
$current_url =& get_instance(); // get a reference to CodeIgniter
$current_url->router->fetch_class(); // for Class name or controller
$current_url->router->fetch_method(); // for method name
URL的最后一段始终是操作。请这样:
$this->uri->segment('last_segment');
以上是关于CodeIgniter:如何获取Controller,Action,URL信息的主要内容,如果未能解决你的问题,请参考以下文章
如何为服务器上的 codeigniter 脚本设置 cron 作业