2

私はこのテストコードを使用しています..私はモジュールと呼ばれ 、コントローラーコードmsと呼ばれる別のモジュールがあります:testtest

<?php
class Test extends MX_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->template->title($this->config->item('site_name','app'));
    }

    public function index()
    {
        $this->template->build('index');
    }
}

内部のコードmsは次のとおりです。

<?php
//ms module
class Msrofi extends MX_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->template->title($this->config->item('site_name','app'));
    }

    public function index()
    {
        $t = Modules::run('test/test/index');
        var_dump($t);
        $this->template->build('index_message');
    }
}

問題は、内部のビルド関数がビューフォルダーではなくビューフォルダー内のビューファイルtestを見つけようとしていることです..チェックしたところ、モジュール名がわかりました..誰かがそれを修正する方法を知っています??indexmstest$this->_modulems

4

2 に答える 2

1

モジュールは1 つtestのコンテキストで呼び出されているため、モジュール内のビュー ファイルを探しています。モデルとライブラリをモジュール間でロードできるのと同じ方法で、ビュー パスに対してもこれを行う必要があります。ms$this->template->build()ms

class Test extends MX_Controller {

    public function index()
    {
        // This path works only from the "test" module
        // $this->template->build('index');

        // This path works from any module
        $this->template->build('test/index');
    }
}

モジュール自体でモジュール パスを明示的に呼び出さなければならないのは少し面倒かもしれませんが、モジュール間の依存関係は、そもそもモジュール性の目標の一部を無効にします。

余談:出力は返されませんが、直接エコーされるため、出力バッファーを使用せずに変数または/Modules::run()に割り当てることはできません。print_rvar_dump

ob_start();
Modules::run('test/test/index');
$t = ob_get_clean();
var_dump($t);
于 2012-05-03T22:50:50.427 に答える
0

module.php の run メソッドを変更してみてください。

次の例では、修正ソリューションを使用する必要があります:</p>

  1. third_party/MX/Modules.php を開きます
  2. 見つけるために75行近く

    $buffer = ob_get_clean();

  3. フォロワーの増加:</p>

    if($output === NULL && $buffer === ''){ $output = CI::$APP->output->get_output(); }

現時点では、正常に動作するはずです...

于 2012-10-26T05:35:48.983 に答える