2011-11-17 75 views
10

我有一個用於日誌記錄的自定義幫助程序。Codeigniter在幫助程序中獲取控制器名稱

在輔助函數的其中一個函數中,我需要獲取被調用的控制器的名稱。有沒有辦法做到這一點?

我不能依賴uri細分,因爲一些控制器在子文件夾中,並且幫助器被全部使用。

回答

22

您可以使用下面的CI2.x

$this->router->fetch_class(); 

您可能需要超級獲得CI的實例變量$ this一線在這種情況下。使用以下命令:

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

,如果你需要呼籲任何原因,這種方法的名稱,還有一個$ci->router->fetch_method();方法。

+0

這是行得通的。謝謝。 – applechief

0

$this->>router->fetch_method();將返回index,如果你做這樣的事情:

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

這應該工作(不是很確定,如果它工作在助手):

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

您也可以使用URI類

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