如何在CodeIgniter中使用__construct阻止索引函数的加载?

时间:2010-08-28 17:27:18

标签: php oop codeigniter

我正在使用CodeIgniter为我的应用程序构建管理区域,我在库中创建了一个基本管理控制器,名为:MY_Admin_Base,用于扩展CI控制器。如果管理员有权访问该方法,我在那里检查数据库。

class MY_Admin_Base extends Controller {

    function __construct()
    {
        parent::Controller();


        //check if the admin has premission to the page
        $this->load->model('admin_permissions_model');
        $query = $this->admin_permissions_model->get_admin_permission(
            array(
            'admin_id'=>$this->session->userdata('admin_id'),
            'page_id'=>$pages_cat_id)
            );

            if(!$query)
                $this->view->load('admin/restricted_area');
    }
}

主类扩展了MY_Admin_Base,并且具有索引方法,类似于:

class Main extends MY_Admin_Base {

    function __construct()
    {
        parent::__construct();
    }

    function index() 
    {       
        $this->view->load('admin/main');
    }
}

问题是如果管理员没有访问权限,那么两个视图都会被加载...受限制和主视图。

有人有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在MY_Admin_Base类中创建一个变量来存储用户是否是管理员:

class MY_Admin_Base extends Controller {
    public $is_admin = true;

然后改变

if(!$query)
    $this->view->load('admin/restricted_area');

if(!$query) {
    $this->view->load('admin/restricted_area');
    $this->is_admin = false;
}

然后在索引函数中,将代码更改为。

function index()  {
    if(!$this->is_admin) return;

    $this->view->load('admin/main');
}