-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 回答