I have these URLs:
How to get controller nam
Last segment of URL will always be the action. Please get like this:
$this->uri->segment('last_segment');
Another way
$this->router->class
If you using $this->uri->segment , if urls rewriting rules change, segments name matching will be lost.
$this->router->fetch_class();
// fecth class the class in controller $this->router->fetch_method();
// method
controller class is not working any functions.
so I recommend to you use the following scripts
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];
}
The methods are deprecated.
$this->router->fetch_class();
$this->router->fetch_method();
You can access the properties instead.
$this->router->class;
$this->router->method;
See codeigniter user guide
URI Routing methods fetch_directory(), fetch_class(), fetch_method()
With properties
CI_Router::$directory
,CI_Router::$class
andCI_Router::$method
being public and their respectivefetch_*()
no longer doing anything else to just return the properties - it doesn’t make sense to keep them.Those are all internal, undocumented methods, but we’ve opted to deprecate them for now in order to maintain backwards-compatibility just in case. If some of you have utilized them, then you can now just access the properties instead:
$this->router->directory; $this->router->class; $this->router->method;