我有这些网址:
如何从这些 URL 中获取控制器名称、操作名称。我是 CodeIgniter 新手。是否有任何帮助功能来获取此信息
前任:
$params = helper_function( current_url() )
哪里$params
变成了类似的东西
array (
'controller' => 'system/settings',
'action' => 'edit',
'...'=>'...'
)
我有这些网址:
如何从这些 URL 中获取控制器名称、操作名称。我是 CodeIgniter 新手。是否有任何帮助功能来获取此信息
前任:
$params = helper_function( current_url() )
哪里$params
变成了类似的东西
array (
'controller' => 'system/settings',
'action' => 'edit',
'...'=>'...'
)
You could use the URI Class:
$this->uri->segment(n); // n=1 for controller, n=2 for method, etc
I've also been told that the following work, but am currently unable to test:
$this->router->fetch_class();
$this->router->fetch_method();
您应该这样做,而不是使用 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 路由方法 fetch_directory()、fetch_class()、fetch_method()
有了 properties
CI_Router::$directory
,CI_Router::$class
并且CI_Router::$method
公开并且他们各自fetch_*()
不再做任何其他事情来返回 properties - 保留它们是没有意义的。这些都是内部的、未记录的方法,但我们现在选择弃用它们以保持向后兼容性以防万一。如果你们中的一些人已经使用了它们,那么您现在可以直接访问这些属性:
$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
为此目的,但要使用它,您需要从
如果你使用 $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');
$this->router->fetch_class();
// fecth 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];
}