WEBOPIXEL

CakePHPでコントローラーやアクションごとにCSS&jsを切り替える方法

Posted: 2011.03.03 / Category: CakePHP 

CakePHPではアクションごとにViewを作成しますが、headerやfooterはlayoutsで書くのですべて共通になっていると思うんですよ。
で、このアクションではこのcssを読み込ませたいなと考えたとこでちょっとだけつまずきました。

Sponsored Link

現在のコントローラーやアクション名をゲットする。

Wordpressみたいに現在のページ(コントローラー&アクション名)がわかれば分岐できそうですね。
以下でコントローラー名など取得できます。

コントローラー名 $this->name
アクション名 $this->action
Webroot $this->webroot
現在のURL $this->here
引用元: CakePHPで実行中のコントローラー名、アクション名を取得する方法

あとはlayoutsのheadに分岐で読み込むだけです。

views > layouts > ctp file

	<head>
	if($this->action == 'hoge') {
		echo $html->css('hoge');
	}
	</head>
	

各Viewで指定する方法

アクション名を取得してとりあえずできるようになったけど、数十個とかあったら管理が大変だよなと思ってたらCakePHPには便利な機能があるのですね。
head内に「$scripts_for_layout」を記述しておけば各Viewファイルからcssなどを追加できるようです。

views > layouts > ctp file

	<head>
	echo $scripts_for_layout;
	</head>
	

各Viewには以下を記述します。

	echo $html->script('hoge', array('inline' => false));
	echo $html->css('hoge', null, array('inline' => false));
	

javascriptとcssでは引数が変わるようです。

LEAVE A REPLY

コードを書く場合は<pre>で囲んでください。