2011-05-13 104 views
3

我正在使用CI 2.0.2并使用5.4模块化扩展..Codeigniter HMVC重申声明错误

我有用户作为默认控制器。

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:\项目\ MYSITE \程序\ THIRD_PARTY \ MX \ Base.php上线55

所以我必须改变以 “是CI_Controller” 然后我收到以下错误

一个错误时遇到 无法找到您所指定的型号:login_model

我没有得到为什么模块化的MVC不工作,如果还有人有一个想法,然后请与大家共享。 感谢..

回答

11

敲打我的脑袋在桌子上了一会儿,围绕谷歌搜索后,我找到了答案。你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,即使它本身不是一个模块的一部分。

+0

感谢您的帮助乔纳森:-) – 2012-10-22 12:05:21

+0

救了我小时! – Alexey 2015-10-31 13:11:48

2

您不仅可以在视图中使用Module::run weithin的控制器。而不是你必须使用:

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

嗨欢迎StackOverflow的,请相应地格式化你的代码。谢谢! – Trufa 2011-06-14 16:22:39

0

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

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