28.md

コメント一覧を表示する

〜コメント一覧の設定〜

  • 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] をつかいまわす。

PAGE TOP



< 前へ  <<目次に戻る  次へ >