CakePHP2.1でデータの削除(実践編その3)

今日は、CakePHPでデータの削除方法を勉強してみます。『CakePHPでデータの更新』の続きです。まず、deleteアクションを作成します。

1. Collectionコントローラにdeleteアクションを追加します。POST送信されたときだけデータを削除するようにします。

app/Controller/CollectionController.php

public function delete($id=null){
 $this->Collection->id=$id;
 //POST送信の場合
 if($this->request->is('post')){
 //データの削除
 $this->Collection->delete();
 //削除後、indexページへ移動する
 $this->redirect('index');
 }

2. edit.ctpにデータ削除用のリンクを作成します。削除確認用のページを作成してから削除するようにしてもいいのですが、cakePHP2.xにはpostLink、postButton()という便利なメソッドがありますので、それを利用します。このメソッドは、HTTPのPOSTメソッドを使ってページにアクセスするリンクやボタンを生成します。これを利用することにより、コントローラでは、GETメソッドを用いたアクション、例えば、deleteのようなアクションを無視することが出来るようになります。

app/view/Collection/edit.ctp

<h1>編集用画面</h1>
 <?php
 //フォームの開始を宣言する
 echo $this->Form->create('Collection');
 //編集用フォームの生成
 echo $this->Form->input('title');
 echo $this->Form->input('created');
 echo $this->Form->input('col_code');
 echo $this->Form->input('save_space');
 //フォームの終了宣言
 echo $this->Form->end('更新');
 //データの削除
 echo $this->Form->postLink('削除',array('action'=>'delete',$id),array(),'このデータを削除してもいいですか');
 ?>

3. それでは、テストで作成したデータを削除してみます。削除のリンクをクリックします。確認メッセージが表示されますので、『OK』ボタンをクリックすると、データが削除されます。

本日は以上です。

 

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

トラックバック

コメント

  1. じゃむ より:

    はじめまして
    cakePHP・PHP初心者です。
    一覧ページではなく、編集ページに「削除」ボタンを設置したいのですが、
    上手くいかずここに辿りつきました。

    早速参考にさせていただき、やってみたのですが、エラーでつまずいています。
    Undefined variable: id というエラーで、編集ページで表示しているレコードのidを上手くdeleteメソッドに渡せていないようです。

    ほぼ、この記事のものと同じ構成で、一覧ページのリンクからread(null,$id)で
    該当レコードをedit.ctpに表示させていますが、このedit.ctpに表示された各カラムの内容を取得するには、
    どのような指定をすればいいのでしょうか?
    お手隙の時にご教授いただければ幸いです。

    質問自体が的外れでしたら、申し訳ありません。


コメントをどうぞ

このページの先頭へ