2011-05-13 106 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');