CakePHP / レイアウトを変更して緑色の帯を消す | とんでもブログ ~ プログラマのWeb開発メモ (PHP, CSS, JavaScript)

CakePHP / レイアウトを変更して緑色の帯を消す

Cakeはとりあえず動かすと、デフォルトのスタイルシートが邪魔をして、緑色の帯が上下に出てしまいます。


これを解決するには、自分で以下のテンプレートファイル(レイアウトと呼ぶ)を作成し、app/views/layouts/default.ctp に保存すれば解決します。



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns="
http://www.w3.org/1999/xhtml ">

<head>
<title><?php echo $title_for_layout ?></title>
<?php echo $html->charset() ?>
<?php echo $scripts_for_layout ?>
</head>

<body>
<?php echo $content_for_layout ?>
</body>
</html>




緑色の帯が出る原因は、デフォルトのレイアウトが使われてて、レイアウト中でデフォルトのスタイルシートが読み込まれていること。

つまり、レイアウトを自分のオリジナルに変えてあげなくてはいけません。


レイアウトにはヘッダやフッタを書いておいて、ビューにはコンテンツを書いておきます。

レイアウトとビューをコントローラに指定して、一緒にレンダリングするというイメージらしいです。




紛らわしかったのが、果たしてどのファイルがレイアウトとして読み込まれてるのかってことです。

参考書とか読んでも書いてない、わかりにくいところだったのでまとめました。



コントローラ中にレイアウトを指定しない場合、

かつ default.ctp を自分で用意していない場合

→ cakePHPがデフォルトで用意している cake/libs/view/layouts/default.ctp が使われます


コントローラ中にレイアウトを指定しない場合、

かつ default.ctpを自分で用意した場合

→ 自分が用意した app/views/layouts/default.ctp が使われます


コントローラ中にレイアウトを指定した場合

→ そのレイアウトが使われます


コントローラ中にレイアウトを指定して、存在しない場合

→ エラーメッセージが表示されます





レイアウトの指定の仕方は、コントローラ中に


public $layout = 'layoutname';


を一行追加するだけ。簡単です。



【とても参考になったリンク】

>これを読みながらやりました。この記事のCakeのバージョンが1.1ですが、詳しく書いてあります。

http://www.ideaxidea.com/archives/2007/06/cakephp_014.html