2016-10-19 2 views
1

私はCI + HMVCのインストールに取り組んでいます。 HMVC関数呼び出しを使用するとき:CodeIgniter HMVC

Modules::run("header"); 

スクリーンに何も印刷されません。しかし、私は実行する場合:

echo Modules::run("header"); 

か:

$x = Modules::run("header"); 

そして、それが動作します。

これは私が仕事をするためにしようとしているコードです:

// HOME MODULE 
class Home extends MX_Controller{ 
    public function index(){ 
     Modules::run("header"); 
     $this->load->view('home_view'); 


     Modules::run("header"); 
     } 
    } 
// HEADER MODULE 
class Header extends MX_Controller{ 
    public function index(){ 
     $this->load->view('header_view'); 
    } 
} 

// FOOTER MODULE 
class Footer extends MX_Controller{ 
    public function index(){ 
     $this->load->view('footer_view'); 
    } 
} 

しかし、私はそれを実行したとき、私は唯一の「home_view」内容を参照してください。ヘッダーもフッターもありません。

$ this-> load-> view()がバッファリングされているため、私の "home_view"コンテンツが私のフッターの下のHTMLの下に表示され、このマングルもの。

モジュール:run()がバッファリングされない理由を知る手助けをしてください。ありがとう

+0

'Modules :: run(" header ");'これは、ドキュメントの中で述べたようにビューを部分的にレンダリングするルールです。だからあなたはなぜそれを使いたくないのですか? –

答えて

2

はい、それはあなたが実際の世界のスクリプトでやったことを実装しないので、私が一度も見たことがない興味深いものです。

何ができた(と私はそれを試してみましたので、この作品は)そうのようなtemplate_viewを作成することです...そして、これは非常に伐採された...

template_view.php

<?= isset($header) ? $header : ''; ?> 

<?= isset($content) ? $content : ''; ?> 

<?= isset($footer) ? $footer : ''; ?> 

次に、ページセクションを作成して最終出力を作成します。彼らはあなたの例では、静的なコンテンツがあるよう

Home.phpコントローラは

class Home extends MX_Controller { 

    public function __construct() { 
     parent::__construct(); 
    } 

    public function index() { 
     // Build the Page Sections 
     $data['header'] = Modules::run("header"); 
     $data['footer'] = Modules::run("footer"); 
     $data['content'] = $this->load->view('home_view', '', true); 
     // Display the final Page 
     $this->load->view('template_view',$data); 
    } 
} 

だからあなたは、すでにあなたのヘッダーとフッターを含めるようにテンプレートを作成することができます。次に、動的に記入する領域を作成します。

これで、テンプレートモジュールを使用して、このすべてを処理できます。あなたの質問ではありませんでしたが、それはあなたに考えのための食糧を与えることを願っています

関連する問題