*

codeigniterのヘッダー、フッターはhookでなくloadで対応する

公開日: : CodeIgniter, footer, header, 未分類

small__364815092
photo credit: mrlerone via photopin cc

 

codeigniterでheaderとfooterを設定するときに、hookで対応する記事をよく見かけるが、

タイトルやデスクリプションなどURL毎に設定したい場合、やっかいだったりする。

view関数を呼び出したときにheaderとfooterを呼ぶ

$this->load->view();を呼び出したときにその前後にフッターとヘッダーを入れれば
各々コントローラで呼び出した時にタイトルやデスクリプションが設定できます。

view関数はloadオブジェクトつまりCI_Loaderクラスで定義しており、
それと application/core/my_loader.php を作成してCI_Loader クラスを親クラスとしてカスタマイズすれば対応可能です。

class MY_Loader extends CI_Loader {

	function __construct(){
		parent::__construct();
		$this->header_path = APPPATH . "views/header.php";
		$this->footer_path = APPPATH . "views/footer.php";
	}

	public function set_header($view)
	{
		$this->header_path = APPPATH . "views/".$view.".php";
	}

	public function set_footer($view)
	{
		$this->footer_path = APPPATH . "views/".$view.".php";
	}

	public function view($view, $vars = array(), $return = FALSE)
	{
		$ci =& get_instance();
		$class = $ci->router->fetch_class(); // Get class
		$action = $ci->router->fetch_method(); // Get action

		// 共通headerを読み込まない処理をいれる
		if(strpos($action, 'ajax') !== FALSE  || $class == "static") {
		} else{
			$header =  $this->_ci_load(array('_ci_path' => $this->header_path, '_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
		}

		// ボディ
		$body =  $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));

		// 共通footerを読み込まない処理をいれる
		if(strpos($action, 'ajax') !== FALSE  || $class == "static") {
		} else{
			$footer =  $this->_ci_load(array('_ci_path' => $this->footer_path, '_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
		}

		if($return) {
			return $body;
		}
	}
}
?>

お問い合わせはこちら!

関連記事

codeigniterでIE8において別Windowで開くとセッションが切れてログアウトしてしまう

codeigniterで作成したWebサービスをアクセスしているときに、別Windowで開く

記事を読む

PHP初心者は特に必見!CodeIgniter勉強するなら参考になるサイトまとめ

今でもメインで使っているし、使っていて気持ちのよいPHPフレームワークはCodeIgnite

記事を読む

【Codeigniter】$this->db->where() の第3引数にfalseを指定した時の解説

photo credit: trekkyandy via photopin cc PHPに

記事を読む

codeigniterでselect文にunionを使いたい

select文でunionを使いたいが、調べてみてると普通にできなさそうなので、librar

記事を読む

codeigniterで複数データベース切替方法について

codeigniterでデータベース切替を行うためにはどうしたらよいかを試行錯誤してみました

記事を読む

codeigniterで、PC版とスマフォ版のテンプレートを自動で振分ける方法

  スマフォ版とPC版のテンプレートを切り替えるために、毎回コントローラでユ

記事を読む

codeigniterはセッション情報をクッキー保持するので、複数台構成でもセッション保持してくれる

サービスが拡大していくと、いずれサーバの複数台構成にしなければならなくなる状況になります。

記事を読む

Visual Studio 2015でOpenCVを動かすための環境設定

OpenCVを利用してウェブカメラから画像を取得し、画面上に表示してみました。 コーディング環

記事を読む

no image

Laravelで複数実行したいとき

マルチプロセスで複数に実行してほしい場合は、JOBクラスを利用します。 利用例として、重たい処

記事を読む

codeigniterで共通のヘッダーフッターの読み出しはCI_LoaderをextendsしたMY_Loaderで実装する

codeigniterで共通のヘッダー、フッターを読み込むときは、CI_Loaderクラスを

記事を読む

お問い合わせはこちら!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

お問い合わせはこちら!

Laravel 5.X Queryログ出力例

Laravel 5.1でQueryログを出力する際のメモです。

no image
Laravelで複数実行したいとき

マルチプロセスで複数に実行してほしい場合は、JOBクラスを利用します。

Laravel5.1 ModelのCollectionからデーターを取得

ModelのCollectionからidのみを取得 <?p

Laravel 5.1でLaravel Mixを使ってみた

本投稿の目的は、Laravel 5.1でLaravel Mixを利用し

Laravel 5.1の自動ログインのお試し!

セッションの保持時間を1分にする 単位:分 デフォルト

→もっと見る

  • AWS構築 - クラウドアドバイザー
PAGE TOP ↑