从Codeigniter控制器移出方法

时间:2013-02-07 10:17:59

标签: php codeigniter

我在我的一个Codeigniter控制器中得到了它。但我希望其他控制器可以访问它,但我认为$ this关键字具有不同的含义,而它需要引用它加载到的控制器。

function checkSecurity($user, $page)
{
    if($this->mod_backend->canUserAccessPage($user, $page))
    {
        $this->load->view('header');
        $this->load->view($page, $data);
        $this->load->view('footer');       
    }
    else
    {
        $this->load->view('header');
        $this->load->view('unauthorised', $data);
        $this->load->view('footer');               
    }
}

1 个答案:

答案 0 :(得分:2)

如果您需要一个方法可以访问您应用中的所有控制器,您可以在MY_Controller.php文件中实现一个类,然后您的所有控制器都必须扩展此类而不是CI_Controller

例如在MY_Controller.php中

<?php

class My_Controller extends CI_Controller{
    public function checkSecurity($user, $page)
    {
        if($this->mod_backend->canUserAccessPage($user, $page))
        {
            $this->load->view('header');
            $this->load->view($page, $data);
            $this->load->view('footer');       
        }
        else
        {
            $this->load->view('header');
            $this->load->view('unauthorised', $data);
            $this->load->view('footer');               
        }
    }

}

然后在你的控制器中你必须扩展这个类:

<?php

class Other_Controller extends My_Controller{
   //Do the stuff

   //You can call your function in every controller
   $this->checkSecurity('my_user', 'my_page');


}