Как я могу предотвратить загрузку индексной функции с __construct в CodeIgniter? - PullRequest
0 голосов
/ 28 августа 2010

Я создаю область администратора для своего приложения с помощью 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 Ответ

1 голос
/ 28 августа 2010

В классе 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');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...