2011-06-30 66 views
2

這已經有一段時間了,因爲我不使用CI,而且我有一個首發懷疑。Codeigniter,擴展類方法的問題

編輯:

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

    } 
} 

什麼情況是,在用戶會話是無效的,它會載入登錄看法,但在我的家庭控制器構造器方法調用視圖,它在同一頁面上加載兩個視圖。

回答

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方法,因爲它更靈活。

+0

問題是User_Controller擴展了MY_Controller,所以它會在無限循環 – Gerep

+0

然後把它放在User_Controller的構造函數中。編輯:如何導致無限循環?它應該工作正常。 –

+0

我已經編輯了這兩個類的問題 – Gerep