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');
    }
}

CakePHP Note (v1.3)

Index