コメント一覧を表示する
〜コメント一覧の設定〜
- association を設定したことでことで次のようにすればよい (view.ctp)
<h2><?php echo h($post['Post']['title']); ?></h2> <p><?php echo h($post['Post']['body']); ?></p> <h2>Comments</h2> <ul> <?php foreach ($post['Comment'] as $comment): ?> <li><?php echo h($comment['body']); ?> by <?php echo h($comment['commenter']); ?></li> <?php endforeach; ?> </ul>
Post と Comment に Association を設定することで Controllerで引っ張ってくるだけで関連する情報が取得できて便利。
〜CommentsControllerの作成〜
- コメントの追加 [CommentsController.php] (PostsController.php をコピー)
<?php class CommentsController extends AppController { public $helpers = array('Html', 'Form'); public function add() { if ($this->request->is('post')) { if ($this->Post->save($this->request->data)) { $this->Session->setFlash('Success!'); $this->redirect(array('action'=>'index')); } else { $this->Session->setFlash('failed!'); } } } public function delete($id) { if ($this->request->is('get')) { throw new MethodNotAllowedException(); } # 通常の削除処理 if ($this->Post->delete($id)) { $this->Session->setFlash('Deleted!'); $this->redirect(array('action'=>'index')); } # Ajaxでの削除 // if ($this->request->is('ajax')) { // if ($this->Post->delete($id)) { // $this->autoRender = false; // $this->autoLayout = false; // $response = array('id' => $id); // $this->header('Content-Type: application/json'); // echo json_encode($response); // exit(); // } // } // $this->redirect(array('action'=>'index')); } }
- [add], [delete] をつかいまわす。