Php 从Codeigniter控制器移出的方法
我在我的一个Codeigniter控制器中得到了这个。但我希望其他控制器可以访问它,但我认为$this关键字有不同的含义,同时它需要引用它加载到的控制器Php 从Codeigniter控制器移出的方法,php,codeigniter,Php,Codeigniter,我在我的一个Codeigniter控制器中得到了这个。但我希望其他控制器可以访问它,但我认为$this关键字有不同的含义,同时它需要引用它加载到的控制器 function checkSecurity($user, $page) { if($this->mod_backend->canUserAccessPage($user, $page)) { $this->load->view('header'); $this->l
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\u Controller.php
文件中实现一个类,然后您的所有控制器都必须扩展该类,而不是CI\u 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');
}
}
}
这样做的另一个好处是,您可以在MY_控制器构造函数中执行您希望在每次加载页面时都执行的操作,而不考虑加载页面的控制器。是的,只记得在控制器调用父对象中::_construct();
<?php
class Other_Controller extends My_Controller{
//Do the stuff
//You can call your function in every controller
$this->checkSecurity('my_user', 'my_page');
}