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;

codeigniter user guide

URI Routing methods fetch_directory(), fetch_class(), fetch_method()

随着属性CI_Router::$directoryCI_Router::$classCI_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信息的主要内容,如果未能解决你的问题,请参考以下文章

根据 url 更改 CodeIgniter 控制器目录

带有 Codeigniter 会话到期时间的帮助

无法在 Codeigniter 中删除 index.php

如何为服务器上的 codeigniter 脚本设置 cron 作业

从 localhost 和 apache 服务器上的 codeigniter 项目中删除 index.php

如何在 CodeIgniter 中获取关系数据