ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

日本CodeIgniterユーザ会コミュのCIでヘッダフッタを簡単につけるには?(Viewの入れ子(?)について)

  • mixiチェック
  • このエントリーをはてなブックマークに追加
ページを生成する際に、ヘッダフッタのように、内容を別々のviewで作れるととても便利だと思うのですが
具体的な方法がわかりません。

example.com/ci にサイトがあるとして
header.php
footer.php
foo.php
というviewがあるとします。

ここで foo.phpというページを作成し、前述のheader,footerをつけるとすると
まず
$this->load->view(foo、$bar)
とすると思います。

問題はview/foo.php内でどう書けば良いのか?ということです。いろいろやり方はあると
思いますが、皆さんはどのように書いていますか?

教えていただければ幸いです。よろしくお願いします。

コメント(5)

View の中に View を書く方法としては、まずは、

http://www.codeigniter.com/wiki/Displaying_Multiple_Views/

の下の方法でしょうか。

$template[’header'] = $this->load->view('header', $header, true);
$template['footer'] = $this->load->view('footer', $footer, true);
$this->load->view('foo', $template);

例えば、viewsディレクトリに

<?php
class Header_Footer{

function html_header($value)
{
}

function html_footer($value)
{
}
}
?>

のようなクラスを用意し、コントローラーで呼び出す。
$this->load->view('header_footer');
$this->load->view('main_page');

で、main_pageのviewファイルに、

<?=Header_Footer::header('ほげほげ')?>

<h1>ああああ</h1>

<?=Header_Footer::footer('ほげほげ')?>

とか?
難しく考えすぎかなー・・・・・

CIはデコレーターという考えは切り捨てているので、
あまり難しいことは考えずに、

$this->load->view('header', '');
$this->load->view('menu', '');
$this->load->view('main_page', '');
$this->load->view('footer', '');

と各コントローラーで書いていくのも悪くはないと思うのですが・・・
マニュアル
/general/views.html
にありますが、

オブジェクトを使った例は下記の通りです:
$data = new Someclass();
$this->load->view('blogview', $data);

Note: オブジェクトを使う場合クラスの変数が配列の要素に変換されます。

こんな感じだと、コーディングの量は減りそうですね。
CakePHPのようなレイアウトアプローチ

http://codeigniter.com/wiki/layout_library/
みなさん、ありがとうございます。

まず
$this->load->view('header', '');
$this->load->view('menu', '');
$this->load->view('main_page', '');
$this->load->view('footer', '');
みたいに連荘で書けるとは思いませんでした(って当たり前か^^;)

ならば

function foo()
{
$data = なかみ
$this->display('main',$data);
}

function display($name,$data){
$this->load->view('header', '');
$this->load->view('menu', '');
$this->load->view($name, $data);
$this->load->view('footer', '');
}

みたいにも書けるってことですよね?
なるほどー!

$template[’header'] = $this->load->view('header', $header, true);
$template['footer'] = $this->load->view('footer', $footer, true);
$this->load->view('foo', $template);
のような方法もよさげですね。

ありがとうございました!

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

日本CodeIgniterユーザ会 更新情報

日本CodeIgniterユーザ会のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング