codeigniter+HMVC cross module call controller->method

前端 未结 7 1087
有刺的猬
有刺的猬 2020-12-16 01:32

I am pulling all my hair off... Have been searching every thread, would appreciate if someone can point me to a working example.

Accroding to the doc: https://bitbuc

相关标签:
7条回答
  • 2020-12-16 02:01

    After some attempts to achieve call a controller that is not located within any module.

    Modules::run('../Controller/method');
    
    0 讨论(0)
  • 2020-12-16 02:02

    so According to the documentation they says copy the controller in default controller folder and move to modules controller.

    So now how do I run the controller that has been moved to modules when I run its running from the default controller file if removed does not work so how to make it run the controller inside module as a default controller to run.

    So Do I need to mention the modules name too in the route

    0 讨论(0)
  • 2020-12-16 02:12

    I am new at CI as well, and I thought I was having the same issue. Script seemed not to be running. (no html output).

    //This did NOT work (did not produce output)
    modules::run('module_name/method_name',$data); 
    
    // but this DID work???  didn't know why
    modules::run('module_name/method_name',$data); 
    exit();
    
    // turns out you need the echo for output
    echo modules::run('templates/login_template',$data); 
    

    This may be obvious to many of you- but I wasted two hours searching for an answer.

    0 讨论(0)
  • 2020-12-16 02:15

    I ran into the same issue. Make sure you check capitalization of your directories and and controllers. It's not case sensitive for differing between the module and controller name.

    //In my case the below did not work
    $this->load->module('dashboard/Dashboard');
    $this->Dashboard->method();
    
    
    //but 
    $this->load->module('dashboard');
    $this->Dashboard->method();
    //worked
    
    0 讨论(0)
  • 2020-12-16 02:18

    Thanks for MC's tip, I finally figured out the cause. HMVC doc indeed lacks some examples for beginner.

    For anyone who may find this thread in the future, correct usage here:

    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();
    

    I don't understand why method 3 failed when I first try... maybe because I restarted HTTPD?

    0 讨论(0)
  • 2020-12-16 02:21

    This HMVC works well for me. I'm working on a project using this HMVC now. Just edit third_party/MX/Modules.php as shown in this link below and tell me the response.

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

    0 讨论(0)
提交回复
热议问题