2013-06-27 44 views
0

我有這樣的代碼:自動加載類和功能在CI

public function checkIfLogged(){ 
    if($this->router->class != 'common/login'){ 
     if(!$this->session->userdata('admin_id')){ 
      redirect('common/login'); 
     } 
    } 
} 

它基本上檢查用戶是否已登錄到管理面板。

有沒有什麼辦法可以讓我在每個控制器(除了登錄控制器)自動加載這個函數?

感謝,

彼得

回答

1

,你可以把這個在My_Controller類和My_Controller的constructor稱之爲

Class My_Controller { 

public function __construct() 
{ 
$this->checkIfLogged(); 
} 
public function checkIfLogged(){ 
if($this->router->class != 'common/login'){ 
    if(!$this->session->userdata('admin_id')){ 
     redirect('common/login'); 
    } 
} 
} 

} 

每個控制器擴展了My_Controller因此checkIfLogged將在每個請求調用

+0

MY_Controller必須擴展CI_Controller。此外,請注意,這段代碼會導致無限循環,除非「common」不會擴展MY_Controller:否則,您將連續重定向 –

+0

這就是爲什麼我有if語句,因此如果控制器是「common/login」那麼重定向被阻止。 –

+0

@dianuj:你在第一行中忘記了'parent :: __ construct();'__construct()'方法內部。 [這是必須的](http://ellislab.com/codeigniter/user-guide/general/core_classes.html)。 – machineaddict