『CakePHP』を使ってみる 〜8〜 『Cake ブログチュートリアル』を元に簡単なブログを作る
リファレンスの付録『Cake ブログチュートリアル』をデータ元に簡単なブログを作ってみることに。
リファレンスでブログへの簡易エントリ投稿ができるようになったので、とりあえずこれを表示させてみる。
データベースからのデータ取りだし関連の復習。
ブログのインデックスを作る
URL
こういう構成にしてみた。
- ブログのインデックス
- ブログのエントリ(パームリンク)
Blog のモデルを作る
『/home/theworld/cake/project/tutorial/models/blog.php』にモデルを作成。
<?php class Blog extends AppModel { var $name = "Blog"; } ?>
とりあえずこれだけ。
Blog のコントローラを作る
『/home/theworld/cake/project/tutorial/controllers/blogs_controller.php』を作る。
<?php class BlogsController extends AppController { var $name = 'Blogs'; var $uses = array('Post'); // Postモデルを使う function index() { $this->postTitle = 'Sample Blog'; // <title></title>を設定 $posts = $this->Post->findAll(); // エントリの一覧を取得 $this->set('posts', $posts); // データをセット } } ?>
Blog のビューを作る
『/home/theworld/cake/project/tutorial/views/blogs/index.thtml』を作る。
<h2>Sample Blog</h2> <?php foreach($posts as $post) { ?> <h2><?php echo $html->link(h($post['Post']['title']), '/blogs/entry/'.$post['Post']['id'].'/')?></h2> <p>Posted on <?php echo h($post['Post']['created'])?></p> <p><?php echo h($post['Post']['body'])?></p> <?php } ?>
これで http://lab.theworld.jp/cakephp/tutorial/blogs/ にアクセスすると以下のように表示されるようになった。
ブログのパームリンク表示を作る
エントリ1件を表示できるようにしてみる。
Blog のコントローラに entryを追加
『/home/theworld/cake/project/tutorial/controllers/blogs_controller.php』にentry()を作る。
<?php class BlogsController extends AppController { var $name = 'Blogs'; var $uses = array('Post'); // Postモデルを使う function index() { $this->postTitle = 'Sample Blog'; // <title></title>を設定 $posts = $this->Post->findAll(); // エントリの一覧を取得 $this->set('posts', $posts); // データをセット } // ここから追加 function entry($id) { $post = $this->Post->findById($id); // $idに対するエントリを取得 $this->postTitle = h($post['Post']['title']); // <title></title>を設定 $this->set('post', $post); } } ?>
$id には引数になっているエントリ番号が自動で入る。
練習なのでデータは細かくチェックしないですすめる。
パームリンク用のビューを作る
『/home/theworld/cake/project/tutorial/views/blogs/entry.thtml』を作る。
<h2><?php echo $html->link(h($post['Post']['title']), '/blogs/entry/'.$post['Post']['id'].'/')?></h2> <p>Posted on <?php echo h($post['Post']['created'])?></p> <p><?php echo h($post['Post']['body'])?></p>
ブラウザでアクセス。
復習的な内容なのでたいしたことしてないなあ。
でも、数日空くと地味に忘れていたりする部分がある。
自分で書いていたらだんだん馴染んできたけど。
次はコメント機能を作ってみよう。