CodeIgniterで全体レイアウトとサブビューのファイルを分ける

  • 5
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

CakePHPのような、全体のレイアウトファイルがあって、個別のViewファイルはその一部を反映するためのもの、という運用をCodeIgniterで実現する方法について。

ビューの内容を文字列として取得する

$content = $this->load->view('subview', '', true);

viewメソッドはそのまま使うと指定された名前のビューの内容を出力してしまいます。
しかし第3引数にtrueを与えることで、ビューの内容を出力せず文字列として取得できます。

第2引数をセットすることでデータを渡すこともできます。

$content = $this->load->view('subview', $subdata, true);

参考文献

それぞれ「Returning views as data」の項を参照。

取得した文字列を反映して外側のビューを出力する

$data['content'] = $content;
$this->load->view('layout', $data);

取得した文字列を別のビューに渡して反映すれば出力できます。