codeigniter + HMVC交叉模块调用控制器 - >方法

Ree*_*eed 11 php codeigniter hmvc

我正在拔掉所有的头发......一直在搜索每一个帖子,如果有人能指出我一个有效的例子,我将不胜感激.

收录到doc:https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc 我可以调用另一个模块 - >控制器使用

modules::run('module/controller/method', $params);
modules::load('module/controller/method', $params);
or
$this->load->module('module/controller');
$this->controller->method();
Run Code Online (Sandbox Code Playgroud)

问题:永远不会调用"method()".每次只调用控制器的构造函数.

目标是将自包含的MVC构建为模块并由其他控制器使用.但无论我做什么,它只调用构造函数,方法不调用.几个星期前我开始使用HMVC,我是否遗漏了文档中的某些内容,或者它是不是以这种方式使用?
这是设置:

modules
  |--ztest1
  |   |--controller/c1.php
  |--ztest2
      |--controller/c2.php

class C1 extends MX_Controller {
  function __construct() {
    parent::__construct();
  }
  function index () {
    Modules::run('ztest2/c2/testc2/');
    //Modules::load('ztest2/c2/testc2/');
    //$this->load->module('ztest2/c2/testc2/');
    //$this->c2->testc2();
  }
}

class C2 extends MX_Controller {
  function __construct() {
    parent::__construct();
    echo __FILE__." // ".__CLASS__."/".__FUNCTION__.PHP_EOL;
  }
  function testc2(){
    echo __FILE__." // ".__CLASS__."/".__FUNCTION__.PHP_EOL;
  }
}

output:
/app/modules/ztest2/controllers/c2.php // C2/__construct
Run Code Online (Sandbox Code Playgroud)

附加说明:脚本没有错误或警告.它只是静静地调用构造函数.

Ree*_*eed 21

感谢MC的小费,我终于找到了原因.HMVC doc确实缺少初学者的一些例子.

对于将来可能会找到此主题的任何人,请在此处正确使用:

to call module01/controller01/method00:

//method 1 CORRECT:
$ctlObj = modules::load('module01/controller01/');
$ctlObj->method00();
//or you could use chaining:
modules::load('module01/controller01/')->method00();

//method 1 WRONG:
modules::load('module01/controller01/method00');  //this will only load contructor

---
//method 2 CORRECT:
modules::run('module01/controller01/method00');   //no trailing slash!

//method 2 WRONG:
modules::run('module01/controller01/method00/');  

---
//method 3 CORRECT:
$this->load->module('module01/controller01');
$this->controller01->method00();
Run Code Online (Sandbox Code Playgroud)

我不明白为什么方法3在我第一次尝试时失败了...也许是因为我重启了HTTPD?


Man*_*zha 2

这个 HMVC 对我来说效果很好。我现在正在使用这个 HMVC 进行一个项目。只需third_party/MX/Modules.php按照下面的链接所示进行编辑并告诉我回复即可。

https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/pull-request/5/return-error-messages-instead-of-logging/diff