blogチュートリアル(8) ビューの作成
このステップでは、レスポンスをHTMLに整形するためのビューを作成します。
このステップが終わると、ようやく投稿記事の一覧画面を表示できるようになります。
indexSuccess.phpファイルの編集
apps/frontend/modules/post/templates/indexSuccess.php
ファイルを開き、以下のように編集して下さい。
<h1>Blog posts</h1> <table> <tr> <th>Id</th> <th>Title</th> <th>Actions</th> <th>CreatedAt</th> </tr> <!-- ここから、$posts配列をループして、投稿記事の情報を表示 --> <?php foreach ($posts as $post): ?> <tr> <td><?php echo $post->getId() ?></td> <td> <?php echo link_to($post->getTitle(), 'post/edit?id=' . $post->getId()) ?> </td> <td> <?php echo link_to('編集', 'post/edit?id=' . $post->getId()) ?> <?php echo link_to('削除', 'post/delete?id=' . $post->getId(), array('confirm'=>'id=' . $post->getId() . 'のデータを削除してもよろしいですか?')) ?> </td> <td><?php echo $post->getCreatedAt() ?></td> </tr> <?php endforeach; ?> </table> <?php echo link_to('新規追加', 'post/new') ?> <?php if ($flash = $sf_user->getFlash('info')): ?> <?php echo $flash ?> <?php endif ?>
ファイルの文字コードはUTF-8で保存してください。
$posts変数をループで処理している点はCakePHPと同じです。 しかし、$posts変数の中に格納されているのがレコードを表すオブジェクトになっている点が大きく異なります。したがって、レコードのIDやタイトルを取得するには以下のようにオブジェクトのメソッドを使用します。
id
フィールド: $post->getId()title
フィールド: $post->getTitle()created_at
フィールド: $post->getCreatedAt()
データベースのフィールド名と、アクセサメソッド名の対応はお分かりでしょうか。フィールド名は「小文字+アンダースコア」で、対応するアクセサ名は、アンダースコアを削除し、各パートの先頭文字を大文字にしたものになっています。
link_toヘルパー
ビューでリンクを記述する場合、symfonyではlink_toヘルパーを使用します。 link_toヘルパーの詳細は、『The Definitive Guide to symfony 1.2 第9章 リンクとルーティングシステム』を参照してください。
編集や削除のリンクを作成するコードで、link_toヘルパーの2つめの引数に内部URLと合わせてidパラメーターを追加しています。
ブラウザで確認
ビューのファイルを保存したら、ブラウザで「http://localhost/sf_sandbox/web/frontend_dev.php/post/index
」にアクセスしてみてください。 この時点では、最初にfixtureで登録した3件のレコードがリストに表示されればOKです。
アクセスするURLは、お使いの環境に合わせて適宜読み替えて下さい。
TIP 表示された各行の編集や削除のリンクがどのようなURLになっているのかも確認してみてください。
ここまでの規約
アクションとビューのファイルを作成してブラウザでアクセスすると表示されましたが、 URLに対するアクションの関連づけ、アクションに対するビューファイルの関連づけは特に設定など行っていませんでした。 実際、これらは設定する必要はほとんどなく、以下のようなフレームワークのデフォルトルール(規約)に従って自動的に関連づけられています。
-
/(モジュール名)/(アクション名)というURLに対して、該当するモジュール、アクションをマッピング
- ルーティングという機能のデフォルト設定。カスタマイズできます。
-
executeIndex(indexアクション)に対して、同一モジュールのtemplatesフォルダ内のindexSuccess.phpというビューファイルをマッピング
- (アクション名)Success.php など。アクションの戻り値でエラーテンプレートなど使い分けられます。アクションで何も戻り値を戻さない場合はSuccessサフィックスのついたテンプレートとなります。
インデックス
Document Index
関連ページリスト
Related Pages
- blogチュートリアル(1) Symfonyの準備
- blogチュートリアル(2) データベースの設定
- blogチュートリアル(3) スキーマの定義とテーブルの生成
- blogチュートリアル(4) 追加の設定
- blogチュートリアル(5) mod_rewriteについてと、初期表示の確認
- blogチュートリアル(6) モデルの作成
- blogチュートリアル(7) postモジュールの作成
- blogチュートリアル(8) ビューの作成
- blogチュートリアル(9) 記事の追加
- blogチュートリアル(10) データのバリデーション
- blogチュートリアル(11) 投稿記事の削除
- blogチュートリアル(12) 投稿記事の編集
- blogチュートリアル(13) ルーティング
- blogチュートリアル(14) まとめと応用
日本語ドキュメント
Japanese Documents
- 2011/01/18 Chapter 17 - Extending Symfony
- 2011/01/18 The generator.yml Configuration File
- 2011/01/18 Les tâches
- 2011/01/18 Emails
- 2010/11/26 blogチュートリアル(8) ビューの作成