-1

次のようなTank Authを使用するコントローラーがいくつかあります。

class Buscar_animal extends CI_Controller {


     function __construct()
    {
        parent::__construct();
        $this->load->database();
        $this->load->helper('url');
        $this->load->library('tank_auth');        
    }



    function index()
    {
        if (!$this->tank_auth->is_logged_in()) {
            redirect('/auth/login/');
        } else {
            $data['user_id']    = $this->tank_auth->get_user_id();
            $data['username']   = $this->tank_auth->get_username();
            $this->load->view('menu.php',$data);        
            $this->load->view('v_search',$data);        
            $this->load->view('footer');            
        }       
    }


    //:...Several other functions
}

私はどのように条件を適用できるのだろうかと思っています:

if (!$this->tank_auth->is_logged_in()) {
                redirect('/auth/login/');
            } 

すべてのコントローラーに。

私はすべてのコントローラーを次のように変更することを考えていました

class Buscar_animal extends MY_custom_controller {

}

カスタムでは、if ロジックを適用します。

それを行う効率的な方法はありますか?

4

1 に答える 1

1

case ではコントローラーへのアクセスを制限するため、ロジックを処理するコンストラクターを使用してクラス$this->tank_auth->is_logged_in() === FALSEを定義することは理にかなっています。abstract

abstract class My_Controller extends CI_Controller
{
     public function __construct()
     {
         if ($this->tank_auth->is_logged_in() !== TRUE) {
            redirect('/auth/login/');
         }
     }
}

class Buscar_Animal extends My_Controller
{
    public function __construct()
    {
        parent::__construct();
    } 

    public function index()
    {
       $data['user_id']    = $this->tank_auth->get_user_id();
       $data['username']   = $this->tank_auth->get_username();
       $this->load->view('menu.php',$data);        
       $this->load->view('v_search',$data);        
       $this->load->view('footer');            
    }

}
于 2013-06-05T00:29:00.100 に答える