Codeigniter, проблема с методами расширенного класса - PullRequest
2 голосов
/ 30 июня 2011

Прошло много времени с тех пор, как я не использую CI, и у меня возникли сомнения по поводу стартера.

EDIT:

class MY_Controller extends CI_Controller {

    public function __construct() {
        parent::__construct();
        if(!$this->session->userdata('usuario')) {
            $this->load->view('login');
        }
    }

}

class Home extends MY_Controller {

    public function __construct() {

        parent::__construct();
        Template::set('title', 'Login');
        Template::set('view', 'home');

    }

    public function index() {

        $this->load->view('template');

    }
}

Что происходит, если пользовательский сеанс недопустим, он загружает представление login , но, как и в моем методе контроллера Home, вызывает представление home , загружая оба представления на той же странице.

1 Ответ

1 голос
/ 30 июня 2011

Не кладите это в крючок, вставьте в MY_Controller в методе __construct().

http://codeigniter.com/user_guide/general/core_classes.html

Пример:

// file application/core/MY_Controller.php
class MY_Controller extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        // your code here
    }

}

Просто убедитесь, что вы расширили MY_Controller вместо CI_Controller в контроллерах, в которых вы хотите запустить этот код. Если вам нужно изменить их все, пусть будет так.

ОБНОВЛЕНИЕ: Вы также можетепопробуйте post_controller_constructor

post_controller_constructor

Вызывается сразу после того, как создан экземпляр вашего контроллера, но до каких-либо вызовов методов.

Но я бы все же предпочел метод MY_Controller, так как он более гибкий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...