我在CodeIgniter中创建了一个控制整个管理员的控制器。如果需要,它将加载另一个控制器,具体取决于URL。它工作正常,但由管理员控制器加载的控制器无法访问数据库。CodeIgniter控制器无法加载数据库
这是我的代码在管理控制器加载必要的控制器。
public function renderAdmin(){
$get=$this->input->get();
if (!empty($get['module'])){
$module=$get['module'];
}
else{
$module="";
}
if (!empty($module)){
if (!empty($get['method'])){
$method=$get['method'];
}
else{
$method="index";
}
$module=modules::load($module."/".$module);
if (!method_exists($module, $method)){
$method="index";
}
$module->$method();
}
else{
$data['screen']=$this->config->item('foo_template_dir_admin')."index";
$data['menuPoints']=self::getMenuPoints();
$this->load->view($this->config->item('foo_template_dir_admin') . "frame", $data);
}
}
当我加载例如标签控制器,它无法加载数据库。
public function index(){
$data['menuPoints']=Admin::getMenuPoints();
$data['screen']=$this->config->item('mindenrekepes_template_dir_admin')."tags/index";
var_dump($this->db); // NULL
$this->load->view($this->config->item('mindenrekepes_template_dir_admin')."frame", $data);
}
该数据库位于自动加载文件中,因此它将被加载。
在管理员控制器或其中一个模型中,我可以访问数据库,因此数据库配置和自动加载也适用于主控制器。
你知道会是这个问题吗?我希望有人能帮助我解决这个问题。
这是自动加载和正常工作,但只有主控制器具有$ DB属性和其他人没有。 – kukko
我发现这个问题,因为HMVC扩展我会扩展MX_Controller而不是MY_Controller。对不起,我没有在问题中提到如何使用HMVC。但是我接受@ g9m29的回答,因为这真的很有帮助。 – kukko