2013-06-27 4 views
0

У меня есть этот код:Автоматически загружает класс & функцию CI

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

Это в основном проверяет, является ли пользователь вошел в панель администратора.

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

Спасибо,

Питер

ответ

1

вы можете поместить это в My_Controller классе и в constructor из My_Controller называют эту

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, так что если контроллер «обычный/логин», то перенаправление предотвращается. –

+0

@dianuj: вы забыли 'parent :: __ construct();' внутри '__construct()' метод в первой строке. [Это обязательно] (http://ellislab.com/codeigniter/user-guide/general/core_classes.html). – machineaddict