cakephpでブックマークアプリを作る(6)
今回マスター管理機能に選択したデータを削除するプログラムを書いていきます。作り方は非常に簡単です。
このファイルを開いて、以下のdeleteアクションを追加してください。
コードはたったこれしかありません。
function delete($id) {
$this->Post->delete($id);
$this->redirect('/posts');
}
解説をしますと、
http://localhost/bookmark_master/posts/delete/8
というURLでアクセスがあった場合$idとはIDが8のことですから、
ID8のデータを削除$this->Post->delete($id);する、ということですね。
たったこれだけ!editアクションに比べるとずいぶんシンプルです。
viewの編集
な、なんと今回はdelete.ctpというファイルすら作りません。
なぜならデータ削除処理をしたらすぐに一覧ページへリダイレクトする流れになるので、必要ないのです。
今回は
だけを編集すればよいのです
<table>
<tr>
<th>サイト名</th>
<td>URL</td>
<td>編集</td>
<td>登録日時</td>
<td>更新日時</td>
</tr>
<tr>
<?php foreach ($posts as $post ): ?>
<th><?php echo $post['Post']['title'];?></th>
<td><?php echo $post['Post']['url'];?></td>
<td><a href="/bookmark_master/posts/edit/<?php echo $post['Post']['id'];?>">修正</a> <a onclick="return confirm('削除してもよろしいですか?');" href="/bookmark_master/posts/delete/<?php echo $post['Post']['id']; ?>">削除</a> </td>
<td><?php echo $post['Post']['created'];?></td>
<td><?php echo $post['Post']['modified'];?></td>
</tr>
<?php endforeach; ?>
</table>
追加したのは、赤字のところだけ、後は前回の分と何も変わっていませんよね。
これだけでもう削除機能はできてしまいました。
解説
Javascriptの confirm(‘削除してもよろしいですか?’)こちらは、Javascriptのalert()に、『OK、キャンセル』の確認ボタンが付いたものです。キャンセルを押せば当然/bookmark_master/posts/edit/8には遷移しません。
削除ボタンを押して削除しているようですが、実際は
http://localhost/bookmark_master/posts/delete/8
にアクセスをしているだけなのです。
すると、8($id=8)を認識して、削除であるdeleteが実行され、すぐに一覧ページへとリダイレクトされる仕組みなのです。
すぐリダイレクトされてしまうので、削除ページを作る必要すら今回はありませんでした。
う~ん、すご~く削除機能はあっさりしていますね!このあっさりしたところがCakePHPの最高にいいところですよね!