CakePHP Viewの基本
まずは続きの例で index.thtml
<h1>登録会員一覧</h1>
<table>
<tr>
<th>Id
<th>ユーザー名</th>
<th>会社名</th>
<th>ドメイン</th>
<th>会員種別</th>
<th>登録日</th>
</tr>
<!-- ここで、 $member 配列のループをまわして、投稿情報を printing out します。 -->
<?php foreach ($members as $post): ?>
<tr>
<td><?php echo $post['Member']['id']; ?></td>
<td>
<?php echo $html->link($post['Member']['username'], "/members/view/".$post['Member']['id']); ?>
</td>
<td><?php echo $post['Member']['company']; ?></td>
<td><?php echo $post['Member']['domain']; ?></td>
<td><?php echo $post['Member']['rank']; ?></td>
<td><?php echo $post['Member']['created']; ?></td>
</tr>
<?php endforeach; ?>
</table>
ファイルに<BODY><HEADER>などのタグが無い!
ところが実際に表示されたページのソースを確認すると
http://***.s***.xrea.com/member/members
<!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>CakePHP(tm) : Members</title>
という感じで続きます。
これはどこかのファイルを読み込んでいるのでは?
CakePHP のプログラマーズ リファレンスガイドを読み返すと発見。
http://www.cakephp.jp/doc/views.html
レイアウト(layout)とは、ビューの周りの部分を囲む、外観すべてのコードを含んだものです。
...Cake のデフォルトの layout は、 /app/views/layouts/default.thtml に新しいレイアウトファイルを置くことでオーバーライドできます。
とあるのでまずはファイルを置いてみた。
<!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>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
</head>
<body>
<!-- もし、すべてのビューでメニューなどを表示したければ、ここに含める -->
<div id="header">
<div id="menu">...</div>
</div>
<!-- ここに、ビューで表示するものを配置 -->
<?php echo $content_for_layout ?>
<!-- すべてのページにフッタを置く場合は追加 -->
<div id="footer">...</div>
</body>
</html>
例で表示してあるものをそのまま
/app/views/layouts/default.thtml
に保存。文字コードをUTF-8にしないと文字化け!
<h1>登録会員一覧</h1>
<table>
<tr>
<th>Id
<th>ユーザー名</th>
<th>会社名</th>
<th>ドメイン</th>
<th>会員種別</th>
<th>登録日</th>
</tr>
<!-- ここで、 $member 配列のループをまわして、投稿情報を printing out します。 -->
<?php foreach ($members as $post): ?>
<tr>
<td><?php echo $post['Member']['id']; ?></td>
<td>
<?php echo $html->link($post['Member']['username'], "/members/view/".$post['Member']['id']); ?>
</td>
<td><?php echo $post['Member']['company']; ?></td>
<td><?php echo $post['Member']['domain']; ?></td>
<td><?php echo $post['Member']['rank']; ?></td>
<td><?php echo $post['Member']['created']; ?></td>
</tr>
<?php endforeach; ?>
</table>
ファイルに<BODY><HEADER>などのタグが無い!
ところが実際に表示されたページのソースを確認すると
http://***.s***.xrea.com/member/members
<!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>CakePHP(tm) : Members</title>
という感じで続きます。
これはどこかのファイルを読み込んでいるのでは?
CakePHP のプログラマーズ リファレンスガイドを読み返すと発見。
http://www.cakephp.jp/doc/views.html
レイアウト(layout)とは、ビューの周りの部分を囲む、外観すべてのコードを含んだものです。
...Cake のデフォルトの layout は、 /app/views/layouts/default.thtml に新しいレイアウトファイルを置くことでオーバーライドできます。
とあるのでまずはファイルを置いてみた。
<!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>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
</head>
<body>
<!-- もし、すべてのビューでメニューなどを表示したければ、ここに含める -->
<div id="header">
<div id="menu">...</div>
</div>
<!-- ここに、ビューで表示するものを配置 -->
<?php echo $content_for_layout ?>
<!-- すべてのページにフッタを置く場合は追加 -->
<div id="footer">...</div>
</body>
</html>
例で表示してあるものをそのまま
/app/views/layouts/default.thtml
に保存。文字コードをUTF-8にしないと文字化け!
コメント
コメントの投稿
« CakePHP いちばん簡単な認証システム l Home l CakePHP 本命の Controller を作成 »

