我在一个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');
}
}
如果您需要应用程序中的所有控制器都可以访问一个方法,您可以在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');
}