我有几个使用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逻辑。
有没有一种有效的方法呢?
答案 0 :(得分:1)
由于在$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');
}
}