2012-05-03 5 views
2

は、私が働いています。このテストコードを持っている.. 私はmsと呼ばれるモジュールを持っていると、別の1がtestコントローラコードがあるtest と呼ばれる:CodeIgniterのテンプレートライブラリとHMVC(MXライブラリ)静的メソッドの実行()

<?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内部ビルド機能がしようということです .. msビューはtestビューフォルダをいないフォルダ内indexビューファイルを見つけるために、INGの私は$this->_moduleをチェックし、それはいずれかがそれを修正する方法を知っている ...私にmsモジュール名を与えました? testモジュール以来

答えて

1

$this->template->build()msモジュール内のビューファイルを探して、ms 1のコンテキストで呼び出されています。あなたがモデルとライブラリのクロスモジュールをロードすることができ、あなたが同様にあなたのビューのパスのためにこれをしなければならないのと同じ方法:

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'); 
    } 
} 

それが明示的にモジュール自体にモジュールパスを呼び出す必要がありますし、多分少し迷惑なんですクロスモジュール依存関係は、最初はモジュール性の目標のいくつかを打ち破っています。

脇迅速:あなたは、出力バッファを使用せずに、それを変数に割り当てたりprint_r/var_dumpことができないので、返されたが、直接エコーされませんModules::run()出力:

ob_start(); 
Modules::run('test/test/index'); 
$t = ob_get_clean(); 
var_dump($t); 
+0

」(長さ= 0) '、ログにはあなたが言及したようにビューがロードされますが、' $ this-> load-> view() 'を使用した場合、ビューファイルの内容が出力されます。 – zaherg

+0

それについて話した私の答えの部分を削除した、私はそれを編集したばかりだが、私はあなたがまだ持っている問題を完全に理解しているのか分からない。 –

+0

'Modules :: run'を直接使ってテスト/インデックスビューのデータを出力しただけでも、何も置かれず、あなたのコードも' string ''(length = 0) '..です。はい、あなたは私の問題を理解しています。ビルド関数は 'test'モジュールから何も出力せず、テンプレートライブラリを使ってurが' Moudles :: run'の出力をvarとデータを直接ページに出力しません – zaherg

0

あなたが変更しようとすることができますmodule.php runメソッド

次の例Iは、定着液を使用する必要がある。

  1. オープンTHIRD_PARTY/MをX/Modules.php ob_get_clean

    $バッファ=()を見つけるために75行近く

  2. 。で

  3. 増加その次

    IF($出力=== NULL & & $バッファ=== ''){ $出力= CI :: $ APP->出力 - > get_output() ;働いていたが、うちの結果は `var_dupm($ T)` `した文字列「の入れています }

このとき、正常に動作することができるはず...

関連する問題