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