A.11. Posts の削除

次に、ユーザが投稿を削除できるようにしましょう。PostsController の中の delete() アクションから始めましょう。

Example A.10. /app/controllers/posts_controller.php (delete アクションのみ)

function delete($id)
{
    $this->Post->del($id);
    $this->flash(' id: '.$id.' の投稿は削除されました。', '/posts');
}

このロジックは $id で指定された投稿を削除し、/posts にリダイレクトする前に、 flash() を使ってユーザに確認メッセージを表示します。

いくらかのロジックを実行してリダイレクトするだけなので、このアクションにはビューがありません。でも、 index ビューを修正して、投稿を削除できるようにしたいと思うかもしれません。

Example A.11. /app/views/posts/index.thtml (add と delete のリンクの追加)

<h1>ブログの投稿</h1>
<p><?php echo $html->link('投稿の追加', '/posts/add'); ?></p>
<table>
    <tr>
        <th>Id</th>
        <th>タイトル</th>
        <th>作成日</th>
    </tr>

   <!-- ここで、 $posts 配列のループをまわして、投稿情報を printing out します。 -->

    <?php foreach ($posts as $post): ?>
    <tr>
        <td><?php echo $post['Post']['id']; ?></td>
        <td>
            <?php echo $html->link($post['Post']['title'], '/posts/view/'.$post['Post']['id']);?>
            <?php echo $html->link(
                '削除',
                "/posts/delete/{$post['Post']['id']}",
                null,
                '本当に削除しますか'
            )?>
        </td>
        </td>
        <td><?php echo $post['Post']['created']; ?></td>
    </tr>
    <?php endforeach; ?>

</table>

このビューのコードは、 HtmlHelper を使用して、投稿を削除しようとする前に、ユーザに対して JavaScript の確認ダイアログをポップアップします。