我正在使用CI 2.0.2并使用5.4模块化扩展。
我有用户作为默认控制器。
class User extends CI_Controller{
public function __construct(){
parent::__construct();
}
public function login{ echo modules::run('login/main'); }
}
这是我的模块/登录名/控制器
class Login extends MX_Controller{
public function __construct(){
parent::__construct();
$this->load->model('login_model','login');
}
public function main{
$arrUserInfo = $this->login->getUserInfo();
}
}
如果我使用"MX_Controller",那么我得到以下错误致命错误:无法在第 55 行的 E:''Projects''mySite''application''third_party''MX''Base.php 中重新声明类 CI
所以我用"CI_Controller"进行了更改,然后我得到以下错误
遇到错误找不到您指定的模型:login_model
我不明白为什么模块化MVC不起作用。如果有人有想法,请分享。谢谢。。
在桌子上敲了一会儿头,在谷歌上搜索了一会儿后,我找到了答案。您的User
控制器应扩展MX_Controller
,而不是CI_Controller
:
class User extends MX_Controller
{
public function __construct(){
parent::__construct();
}
public function login { echo modules::run('login/main'); }
}
显然,您从中调用模块控制器的任何控制器都必须扩展MX_Controller
,即使它本身不是模块的一部分。
您不能仅在视图中使用Module::run
weithin控制器。相反,您必须使用:
$this->load->module('folder/controller');
$this->controller->method();
此外,在加载模型时,必须指定模块名称。
即 $this->load->model('login/login_model','login');