CakePHP Note (v1.3) > ビュー > レイアウト
レイアウト
レイアウトはビューの大枠の事でアプリケーション内で共通して使用されるヘッダやフッタ、cssファイルなどに関する記述がする事が出来ます。レイアウトの中に各アクションのビューの内容が差し込まれて出力されます。
レイアウト内容
標準で使用されるレイアウトは以下のような内容になっています。各アクションで使用するビューの内容は$content_for_layoutの部分に差し込まれて出力されます。dafault.ctpという名前のファイルが使用されます。
<html>
<head>
<?php echo $this->Html->charset(); ?>
<title>
<?php __('CakePHP: the rapid development php framework:'); ?>
<?php echo $title_for_layout; ?>
</title>
<?php
echo $this->Html->meta('icon');
echo $this->Html->css('cake.generic');
echo $scripts_for_layout;
?>
</head>
<body>
<div id="container">
<div id="header">ヘッダー</div>
<div id="content">
<?php echo $this->Session->flash(); ?>
<?php echo $content_for_layout; ?>
</div>
<div id="footer">フッター</div>
</div>
</body>
</html>
ページタイトルの変更
ページタイトルは、$title_for_layoutの内容を表示します。ページタイトルを変更するにはコントローラ内のアクションで変更するか、各アクションのビューで変更します。(CakePHP 1.3からは$pageTitleは使用されなくなりました)
コントローラで変更する例
class PostsController extends AppController {
function view($id) {
$this->set('title_for_layout', 'Custom Title');
}
}
アクションのビュー内で変更する例
$this->set('title_for_layout', 'Custom Title');
独自のレイアウトを作成
独自のレイアウトはapp/view/layouts/以下に作成します。標準のレイアウトのファイル(cake/libs/viw/layouts/default.ctp)からコピーしてきて編集しても良いでしょう。レイアウトを目的に応じて複数作成しておき、使用したいレイアウトをコントローラ内で切り替えて使用する事も出来ます。
レイアウトを切り替える例
class PostsController extends AppController {
function view($id) {
$this->layout('special_layout');
}
}