我尝试像这样在codeigniter中实现OOP。我将CI_Controller扩展到MY_Controller
所以,代码是这样的。
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class MY_Controller extends CI_Controller {
public function __construct() {
parent::__construct();
// // Autoload model.
$model = strtolower(get_class($this));
if (file_exists(APPPATH . 'models/' . $model . '_model.php')) {
$this->load->model($model . '_model', $model);
}
}
}
class Public_Controller extends MY_Controller {
// Layout untuk "Publik"
public $layout = 'layout';
}
class Supervisor_Controller extends MY_Controller {
public $layout = 'supervisor/layout';
public function __construct() {
parent::__construct();
session_start();
//Check login
$login_status = $this->session->userdata('login_status');
$user_level = $this->session->userdata('user_level');
if (($login_status !== true) && ($user_level !== 'supervisor')) {
redirect(base_url());
}
}
}
class Manager_Controller extends MY_Controller {
public $layout = 'Manager/layout';
public function __construct() {
parent::__construct();
session_start();
// Cek status login user.
$username = $this->session->userdata('username');
$user_level = $this->session->userdata('user_level');
$login_status = $this->session->userdata('login_status');
if (($login_status !== true) && empty($username) && ( ($user_level !== 'manager'))) {
redirect('base_url');
}
}
}
class Admin_Controller extends MY_Controller {
public $layout = 'admin/layout';
public function __construct()
{
parent::__construct();
session_start();
// Cek status login user.
$login_status = $this->session->userdata('login_status');
$user_level = $this->session->userdata('user_level');
$username = $this->session->userdata('username');
// Cek status login.
if ( ($login_status !== true) && empty($username) ) {
redirect('admin/login');
}
// Just admin can access it
if ($user_level !== 'administrator') {
$this->session->set_flashdata('pesan_error', 'Anda tidak berhak mengakses halaman ini!');
redirect('admin/home');
}
}
}
我的问题是,我想创建一个登录表单来实现这两个类。 有解决方案吗 我在CI 3.0.1