2010-11-29 4 views
2

私は、メインのコンテンツ領域を切り離すことができている間、常に同じヘッダとフッタを表示する簡単な方法を探しています。私はMVCでこれを達成する方法がわかりません。MVC Codeigniterでヘッダとフッタを分ける

答えて

1

ヘッダーのビューとフッターのビューを作成し、各ページの上部と下部に表示します。または、テンプレートビューを作成して読み込み、他のビューを取り込んでテンプレートのコンテンツ領域に挿入します。いずれにしても、あなたはどこにいたいのですか?自動的に実行させたい場合は、コントローラのコンストラクタでテンプレートビューを作成し、コントローラクラスのメンバに保存することができます。次に、$ this-> templateがテンプレートビューになるようにします。

+0

あなたは私がすべてのビューの上部に荷重 - >ビュー(「ヘッダ」)?>を追加する必要があります言っていますか? – roger

+0

あなたはすべての主要なビューの上部でそれを行うことができます。しかし、すべてのビューではありません。しかし、私はすべてのコントローラー方式の最上位にあると言っていました。 – DampeS8N

+1

頭を掻き、WTFを考えているなら、それは無駄だ!その後、おめでとう!あなたはMVCの大学を卒業しました! MVCは、構築が容易ではなく、メンテナンス可能なサイトを作成するように設計されています。それは意図的にすべてを作るのに時間がかかります。 – DampeS8N

10

あなたはマスタービューを作成することができます。

ビュー/ master.php

$this->load->view('header'); 
echo $content; 
$this->load->view('footer'); 

そしてマスタービューをレンダリングする方法でベースコントローラを作成します。サブビューの内容がロードされ、マスタービューに渡されます。

ライブラリ/ MY_Controller.php

class MY_Controller extends Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function master_view($content_view, $data) 
    { 
     $data['content'] = $this->load->view($content_view, $data, true); 
     $this->load->view('master', $data); 
    } 
} 

は、このベースコントローラを拡張して、アクションメソッドからベースコントローラのメソッドを呼び出します。

class Items extends MY_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() 
    { 
     $data['items'] = $this->item_model->get_items(); 
     $this->master_view('items/index', $data); 
    } 
} 

items.php

コントローラ/なお、各図にヘッダーとフッターをロードするよりも乾燥している傾向にあります。上記と同様に

+0

'items/index'はItemsコントローラのindex()関数です。 私は混乱しています。これは再帰的な呼び出しです。 –

0

、私はこのようにそれを行う:

テンプレートビューで次に
$this->data['content']='your_content_view'; 
$this->load->vars($this->data); 
$this->load->view('template'); 

$this->load->view('header'); 
$this->load->view($content); 
$this->load->view('footer'); 

ビューテンプレートビューは、ヘッダビューをロードするので、その後、他のビューをロードすることができますがコンテンツで指定したビュー、そしてフッタービューです。

、あなたはコンテンツにサイドバーのビューをロードすることができ、このアイデアを使用するなど

関連する問題