Codeigniter,扩展类方法的问题

时间:2011-06-30 19:51:17

标签: php codeigniter hook

已经有一段时间了,因为我不使用CI而且我有一个先发制人的怀疑。

修改

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');

    }
}

会发生的是用户会话无效,它会加载登录视图,但在我的Home控制器中,构造方法调用视图 home ,其加载两个视图在同一页面上。

1 个答案:

答案 0 :(得分:1)

请勿将其放入钩子中,将其放在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方法,因为它更灵活。