次に、ユーザが投稿を削除できるようにしましょう。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 の確認ダイアログをポップアップします。