CodeIgniter

CodeIgniter2 #04 Layout レイアウトライブラリ

標準では Layout 機能がないのでここからもらってくる。

// file /application/libraries/Layout.php
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');

class Layout
{

    var $obj;
    var $layout;

    function Layout($layout = "layout_main")
    {
        $this->obj =& get_instance();
        $this->layout = $layout;
    }

    function setLayout($layout)
    {
      $this->layout = $layout;
    }

    function view($view, $data=null, $return=false)
    {
        $loadedData = array();
        $loadedData['content_for_layout'] = $this->obj->load->view($view,$data,true);

        if($return)
        {
            $output = $this->obj->load->view($this->layout, $loadedData, true);
            return $output;
        }
        else
        {
            $this->obj->load->view($this->layout, $loadedData, false);
        }
    }
}
?>

使い方はこんな感じ。

// 最初にライブラリの読み込み
$this->load->library('layout', 'layout_main'); 

// もしいつも使うのであれば、application/config.php にて以下の設定を行う
$autoload['libraries'] = array('layout'); 

// ビューの出力
$data->title_for_layout='ページタイトル';
$this->layout->view('/shop/view_cart', $data); 

// layout ファイル /application/views/layout_main.php
<html>
<head>
<title><?=$title_for_layout?></title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<link rel="stylesheet" href="/css/main.css" type="text/css" />
</head>
<body>
<div id="pagewidth" >
  <div id="header" ><img src="/images/header.jpg" width="700" height="200"></div>
  <div id="wrapper" class="clearfix" >
    <div id="twocols" class="clearfix">
      <?php echo $content_for_layout?>
    </div>
  </div>
  <div id="footer" > Footer >/div>
</div>
</body>
</html>

コメントを残す