Codeigniter получает имя контроллера в помощнике

У меня есть специальный помощник, который я использую для ведения журнала.

В рамках одной из функций хелпера мне нужно получить имя вызываемого контроллера. Есть ли способ сделать это?

Я не могу полагаться на сегменты uri, потому что некоторые контроллеры находятся в подпапках, а помощник используется повсюду.

Ответ 1

В CI2.x

вы можете использовать следующее:
$this->router->fetch_class();

Возможно, вам понадобится получить экземпляр супер переменной переменной CI $this first - и в этом случае. Используйте следующее:

$ci =& get_instance();
$ci->router->fetch_class();

Также существует метод $ci->router->fetch_method();, если вам нужно имя метода, вызванного по какой-либо причине.

Ответ 2

$this->>router->fetch_method(); вернет index, если вы сделаете что-то вроде этого:

class Someclass extends CI_Controller {        
    function index(){        
        $this->edit();        
    }        
    function edit(){        
        $this->router->fetch_method(); //outputs index
    }
}

Ответ 3

это должно работать (не так уверен, что он работает в помощнике):

$ci =& get_instance();
$ci->router->class // gets class name (controller)
$ci->router->method // gets function name (controller function)

Ответ 4

Вы также можете использовать класс URI

$ci = & get_instance();
$ci->uri->segment(1) // That stands for controller
$ci->uri->segment(2) // That stands for method