Codeigniter HMVC 重新声明错误即将到来

发布于 2024-11-07 06:17:33 字数 806 浏览 0 评论 0原文

我正在使用 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 不起作用。如果有人有想法,请分享。 谢谢..

I am using CI 2.0.2 and using 5.4 Modular extension..

I have user as a default controller.

class User extends CI_Controller{

 public function __construct(){
   parent::__construct();
 } 

 public function login{ echo modules::run('login/main'); }
}

Here is my modules/login/controller

class Login extends MX_Controller{

  public function __construct(){
    parent::__construct();

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

  public function main{
     $arrUserInfo = $this->login->getUserInfo();
  }
}

If I use "MX_Controller" then I am getting below error
Fatal error: Cannot redeclare class CI in E:\Projects\mySite\application\third_party\MX\Base.php on line 55

So I have change with "CI_Controller" then I am getting below error

An Error Was Encountered
Unable to locate the model you have specified: login_model

I am not getting why modular MVC not working.. If anyone have an idea then please share it.
thanks..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

北城孤痞 2024-11-14 06:17:33

在把头敲在桌子上一会儿并谷歌搜索后,我找到了答案。您的 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,即使它本身不是模块的一部分。

After beating my head on the desk for a while and Googling around, I found the answer. Your User controller should extend MX_Controller, not CI_Controller:

class User extends MX_Controller
{
    public function __construct(){
        parent::__construct();
    } 

    public function login { echo modules::run('login/main'); }
}

Apparently, any controller that you're calling a module controller from must extend MX_Controller, even if it is not itself part of a module.

花海 2024-11-14 06:17:33

您不能仅在视图中的控制器内使用Module::run。相反,你必须使用:

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

You cannot use Module::run weithin a controller only in Views. Instead of that you have to use:

$this->load->module('folder/controller');
$this->controller->method();
甜心小果奶 2024-11-14 06:17:33

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

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

Also, when loading models you must specify the module name.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文