Codeigniter HMVC 重复声明错误的解决方法

3

我正在使用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”,我会出现以下错误 致命错误:无法重复声明类CI在E:\Projects\mySite\application\third_party\MX\Base.php的第55行
所以我已经改用“CI_Controller”,然后我又遇到了以下错误
发生错误 找不到您指定的模型:login_model
我不知道为什么模块化MVC不起作用...如果有任何想法,请分享。 谢谢..
3个回答

12

在折磨自己一会儿并在Google上搜索了一下之后,我找到了答案。你的 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,即使它本身不是一个模块。


2

您不能在控制器中使用Module::run,只能在视图中使用。取而代之的是,您需要使用:

$this->load->module('folder/controller');
$this->controller->method();

你好,欢迎来到StackOverflow,请适当地格式化你的代码。谢谢! - Trufa

0

此外,在加载模型时,您必须指定模块名称。

例如:$this->load->model('login/login_model','login');


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接