ビューを更に考える (2/7)
作成:2010-02-17 15:55
更新:2010-05-10 19:12
更新:2010-05-10 19:12
■レイアウトを作成する
では、実際にレイアウトを作成してみましょう。レイアウト用のテンプレートは、「views」内にある「layouts」フォルダの中に配置します。アクション用に作成したテンプレートと同様、.ctpファイルとして用意します。
では、「layouts」内に、新たに「sample.ctp」というファイルを作成しましょう。そして、以下に挙げたようにソースコードを記述してください。
ここでは、いくつかの<?php ?>タグを埋め込んで、値を出力するようにしてあります。整理すると以下のようになります。
$page_title――ページタイトルです。
$content_header――コンテンツのヘッダー部分です。
$content_for_layout――コンテンツの内容です。
$content_footer――コンテンツのフッター部分です。
これらの中で注意素べきは、「$content_for_layout」です。これは、CakePHPによって用意される変数です。レイアウトを使用すると、CakePHPはアクションに対応するテンプレートを読み込み、レンダリングして、その結果(出力される内容)をこの$content_for_layoutという変数に納めるようになっているのです。ですから、レイアウト・テンプレートを作成する場合は、必ずこの変数でコンテンツを表示させるように設計します。
もう1つのポイントは、ヘッダー部分にある「echo $html->css("cake.sample");」というものです。「$html->css」というのは、引数に指定したスタイルシートを読み込むためのタグを生成します。ここでは、「cake.sample」という名前のスタイルシートを読み込むようにしてあるわけです。このレイアウト・テンプレートで使用するスタイルシートを、ここに用意しておけば、それが読み込まれるようになります。
では、「layouts」内に、新たに「sample.ctp」というファイルを作成しましょう。そして、以下に挙げたようにソースコードを記述してください。
ここでは、いくつかの<?php ?>タグを埋め込んで、値を出力するようにしてあります。整理すると以下のようになります。
$page_title――ページタイトルです。
$content_header――コンテンツのヘッダー部分です。
$content_for_layout――コンテンツの内容です。
$content_footer――コンテンツのフッター部分です。
これらの中で注意素べきは、「$content_for_layout」です。これは、CakePHPによって用意される変数です。レイアウトを使用すると、CakePHPはアクションに対応するテンプレートを読み込み、レンダリングして、その結果(出力される内容)をこの$content_for_layoutという変数に納めるようになっているのです。ですから、レイアウト・テンプレートを作成する場合は、必ずこの変数でコンテンツを表示させるように設計します。
もう1つのポイントは、ヘッダー部分にある「echo $html->css("cake.sample");」というものです。「$html->css」というのは、引数に指定したスタイルシートを読み込むためのタグを生成します。ここでは、「cake.sample」という名前のスタイルシートを読み込むようにしてあるわけです。このレイアウト・テンプレートで使用するスタイルシートを、ここに用意しておけば、それが読み込まれるようになります。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<!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" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title><?php echo $page_title; ?></title> <?php echo $html->css("cake.sample"); ?> </head> <body> <div id="header"><?php echo $content_header; ?></div> <div id="content"> <?php echo $content_for_layout; ?><br /><br /> </div> <div id="footer"><?php echo $content_footer; ?></div> </body> </html>
※関連コンテンツ
「初心者のためのCakePHP 1.3 プログラミング入門」に戻る