0

我在我的一个 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');               
    }
}
4

1 回答 1

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


}
于 2013-02-07T10:26:25.987 回答