11

私はすべての髪を引っ張っています...すべてのスレッドを検索してきましたが、誰かが私に実際の例を教えていただければ幸いです。

ドキュメントによると: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();

問題:「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

追記: スクリプトにエラーや警告はありません。コンストラクターを静かに呼び出すだけです。

4

7 に答える 7

23

MCのアドバイスをありがとう、私はついに原因を突き止めました。HMVCのドキュメントには、初心者向けの例がいくつかありません。

将来このスレッドを見つける可能性のある人は、ここで正しい使用法を使用してください。

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

最初に試したときに方法3が失敗した理由がわかりません...おそらくHTTPDを再起動したためですか?

于 2013-02-19T15:12:11.663 に答える
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

于 2013-02-19T01:15:34.283 に答える
0

ドキュメントによると、デフォルトのコントローラーフォルダーにコントローラーをコピーし、モジュールコントローラーに移動すると書かれています。

削除された場合にデフォルトのコントローラーファイルから実行するときに、モジュールに移動されたコントローラーを実行する方法が機能しないため、実行するデフォルトのコントローラーとしてモジュール内のコントローラーを実行する方法。

ルートでモジュール名も言及する必要がありますか

于 2015-09-09T06:19:39.680 に答える