Вызов функции контроллера в другом контроллере в CodeIgniter

У меня есть «пользователь» контроллера в моем приложении codeigniter. Этот контроллер имеет функцию logged_user_only() :

 public function logged_user_only() { $is_logged = $this -> is_logged(); if( $is_logged === FALSE) { redirect('user/login_form'); } } 

Поскольку эта функция вызывает другую функцию is_logged() , которая просто проверяет, установлен ли сеанс, если да, то он возвращает true, else возвращает false.

Теперь, если я поместил эту функцию в начале любой функции внутри одного и того же контроллера, он проверит, не был ли пользователь зарегистрирован, он будет перенаправлен на login_form противном случае продолжить. Это прекрасно работает. Например,

 public function show_home() { $this -> logged_user_only(); $this->load->view('show_home_view'); } 

Теперь я хотел бы вызвать эту logged_user_only() в функции другого контроллера, чтобы проверить, зарегистрирован ли пользователь или нет?

PS. Если это невозможно сделать или не рекомендуется, где я должен помещать эту функцию для доступа к нескольким контроллерам? Благодарю.

    Почему бы не расширить контроллеры, чтобы метод входа находился в пределах MY контроллера (в основной папке вашего приложения), и все остальные контроллеры расширяют это. Например, вы могли бы:

     class MY_Controller extends CI_Controller { public function is_logged() { //Your code here } } 

    и ваши основные контроллеры могли бы затем расширить его следующим образом:

     class Home_Controller extends MY_Controller { public function show_home() { if (!$this->is_logged()) { return false; } } } 

    Для получения дополнительной информации посетите: Создание основных системных классов

    Вызов контроллера из другого невозможно с помощью CI и не рекомендуется.

    Либо переместите свой logged_user_only в помощника, либо даже лучше основного контроллера, из которого вы распространяете все ваши контроллеры ( MY_Controller ), см. MY_Controller

    просто загрузите контроллер пользователя в качестве библиотеки в контроллере

     function __construct(){ parent::__construct(); $this->load->library('../controllers/user'); 

    } теперь вызывайте эту функцию пользовательского контроллера любым, где в вашем контроллере,

     $this->user->logged_user_only(); 

    Вход в систему для входа в контроллер

     $data =array('username' => $this->input->post('username'), 'password' => $this->input >post('password')) $query = $this->db->get_where('usertable',$data) if ($query->num_rows() == 1) { $data = array( 'username' => $this->input->post('username'), 'logged_in' => TRUE, 'role' => "user"); $this->session->set_userdata($data); redirect('home'); } 

    Функция Construct в пользователе контроллера

     if ($this->session->userdata('logged_in') == TRUE && $this->session->userdata('role') == "user") {} else {redirect('home');}