CodeIgniterのレイアウト実装

事由

CodeIgniterはCakePHPのようなレイアウトで利用したいので、やり方を調べました。

ライブラリファイル作成します。

libraries/Layout.php

<?php

class Layout{
private $_ci;
private $_name = ‘default’;
private $_parameters = array(‘title’ => ”, ‘h1’ => ”, ‘h2’ => ”, ‘h3’ => ”, ‘h4’ => ”, ‘h5’ => ”, ‘h6’ => ”);

public function __construct(){
$this -> _ci = & get_instance();
}

public function set_template($name){
$this -> _name = $name;
}

public function set_parameter($key, $val){
$this -> _parameters[$key] = $val;
}

public function __set($key, $val) {
$this -> set_parameter($key, $val);
}

public function render($content, $return = FALSE){
$this -> _parameters[‘_content’] = $content;
return $this -> _ci -> load -> view(‘layouts/’ . $this ->
_name, $this -> _parameters, $return);
}
}

カスタマイズコントロール作成します。

core/MY_Controller.php

class MY_Controller extends CI_Controller{

public function __construct(){
parent::__construct();
// オートロードで設定してもOK
$this -> load -> library(‘layout’);
}

protected $_use_layout = TRUE;

public function use_layout($value){
$this -> _use_layout = $value;
}

//出力ハンドラ
public function _output($content){
if($this -> _use_layout) {
$content = $this -> layout -> render($content, TRUE);
}
echo $content;
}

}

画面コントロール作成します。

controllers/Usglo.php

<?php<?phpdefined(‘BASEPATH’) OR exit(‘No direct script access allowed’);
class Usglo extends MY_Controller {
/** * Index Page for this controller. */

public function index() {

$this->load->database();
$query = $this->db->query(‘SELECT * FROM UsgloTable limit 1’);
$data[‘query’] = $query;
$this->load->view(‘Usglo_index’, $data);

}

}

レイアウト作成します。

views/layouts/default.php

<?php defined(‘BASEPATH’) OR exit(‘No direct script access allowed’);?>
<!DOCTYPE html>
<html lang=”en”>
<head>
<meta charset=”utf-8″>
<title>Welcome to CodeIgniter</title>
</head>
<body>
<div id=”container”>
<h1> Codeigniter </h1>
<div id=”body”>
ここは画面element
<?php echo $_content;?>
</div>
<p class=”footer”>Page rendered in <strong>{elapsed_time}</strong> seconds. <?php echo  (ENVIRONMENT === ‘development’) ?  ‘CodeIgniter Version <strong>’ . CI_VERSION . ‘</strong>’ : ” ?>
</p>
</div>
</body>
</html>

画面エレメント作成します。

views/usglo_index.php

<p>element page部分</p>

 

注意点:

  • フォルダの構造
  • 各ファイル名及びクラス名の設定

参照URL:
http://qiita.com/jkr_2255/items/3aaf4c685d8cab13548e

Comments are closed.