cakephpでブックマークアプリを作る(6) ITかあさん

ITかあさん

cakephpでブックマークアプリを作る(6)

今回マスター管理機能に選択したデータを削除するプログラムを書いていきます。作り方は非常に簡単です。

C:\xampp\htdocs\bookmark_master\app\controllers\posts_controller.php

このファイルを開いて、以下の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というファイルすら作りません。
なぜならデータ削除処理をしたらすぐに一覧ページへリダイレクトする流れになるので、必要ないのです。

今回は

C:\xampp\htdocs\bookmark_master\app\views\posts\index.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の最高にいいところですよね!

初夏のJavaScript祭 in サーキュレーションビル ForPro