2011-06-30 14 views
2

私はCIを使用していないので、しばらくしています。Codeigniter、拡張クラスメソッドの問題

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

    } 
} 

何それはユーザーセッションが無効であるで起こる、それはログインビューをロードしますが、私のホームコントローラのコンストラクタメソッドのように表示を呼び出して、両方のビューを同じページにロードします。

答えて

1

フックに入れないでください。 __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 
    } 

} 

ちょうどあなたがあなたがこのコードを実行するコントローラに代わりCI_ControllerMY_Controllerを拡張していることを確認してくださいあなたがそれらのすべてを変更する必要がある場合は、そうです。それ。

UPDATE:あなたはまた、post_controller_constructor

post_controller_constructor

があなたのコントローラがインスタンス化された直後に呼び出されますが、任意のメソッド呼び出しが起こって前に試みることができます。

しかし、もっと柔軟なので、私はまだMY_Controllerメソッドを好むでしょう。

+0

問題は、User_ControllerがMY_Controllerを拡張しているため、無限ループになります。 – Gerep

+0

それをUser_Controllerのコンストラクタに入れます。編集:どのように無限ループの原因になりますか?それは正常に動作するはずです。 –

+0

私は両方のクラスで質問を編集しました – Gerep

関連する問題