hooks.php
$hook['post_controller_constructor'] = function()
{
$this->CI = & get_instance();
$session = $this->CI->session->userdata('user_id');
if( $session == TRUE )
{
$this->CI->load->view('admin/dashboard');
echo "<script>console.log('true')</script>";
}
if( $session == FALSE )
{
$this->CI->load->view('public/articles_list');
echo "<script>console.log('false')</script>";
}
};
(базовый контроллер) MY_controller.php
class MY_Controller extends CI_Controller
{
public function __construct()
{
parent::__construct();
// if (!($this->session->userdata('user_id'))) {
// return redirect('login');
// }
$this->load->model('articles_model');
}
}
(Контроллер) admin.php
class Admin extends MY_Controller
{
public function dashboard()
{
$this->load->helper('form');
$this->load->library('pagination');
$config = [
'base_url' => base_url('admin/dashboard'),
'per_page' => 5,
'total_rows' => $this->articles_model->num_rows(),
'full_tag_open' => '<ul class="pagination">',
'full_tag_close' => '</ul>',
'next_tag_open' => '<li class="page-item">',
'next_tag_close' => '</li>',
'prev_tag_open' => '<li class="page-item">',
'prev_tag_close' => '</li>',
'num_tag_open' => '<li class="page-item">',
'num_tag_close' => '</li>',
'cur_tag_open' => '<li class="page-item active"><a class="page-link">',
'cur_tag_close' => '</a></li>',
'attributes' => [
'class' => 'page-link'
]
];
$this->pagination->initialize($config);
$articles = $this->articles_model->get_articles($config['per_page'],$this->uri->segment(3));
$this->load->view('admin/dashboard',['articles'=>$articles]);
}
(Контроллер) login.php
class Login extends CI_Controller
{
public function index()
{
// if ($this->session->userdata('user_id')) {
// return redirect('admin/dashboard');
// }
$this->load->helper('form');
$this->load->view('public/admin_login.php');
}
Мой вопрос был до того, как я проверял сеансы с использованием базового контроллера, он работал нормально, но теперь я хочу использовать хуки, чтобы всякий раз, когда любой контроллер получал запрос, он проверял хук на предмет того, вошел ли пользователь в систему или нет, и перенаправляет на любая из страниц.
Проблема в том, что он не перенаправляет на страницу, я пытался $this->CI->load->view()
, он остается на той же странице, ничего не происходит, я также пытался redirect()
, но затем он застревает в каком-то цикле, давая ERR_TOO_MANY_REDIRECTS
ошибка