blogチュートリアル(11) 投稿記事の削除
次は、ユーザーが既存の記事を削除できるようにしてみましょう。
これは、postモジュールのdeleteアクションとして実装します。 apps/frontend/modules/post/actions/actions.class.php
ファイルをエディタで開き、以下のコードをクラス内の末尾に追加してください。
public function executeDelete(sfWebrequest $request) { $id = $request->getParameter('id'); $this->forward404Unless($id); Doctrine_Query::create() ->delete() ->from('Post p') ->where('p.id = ?', $id) ->execute(); $this->getUser()->setFlash('info', 'データを削除しました。'); $this->redirect('post/index'); }
このコードでは、主に以下の3つのことを行っています。
- パラメータから削除対象のIDを取得する。
- 指定されたIDに対応するレコードを削除するDoctrineのDQLを作成し実行する。
- 削除完了メッセージをflashにセットして、一覧画面へリダイレクトする。
URLパラメーターは、
$request->getParameter()
で取得します。 もしid
パラメーターが渡されていない場合は、404ページへ転送しています。
DQL
symfonyは、デフォルトでDoctrineというORMを使用しています。 DQLはDoctrine独自の機能で、SQLに似た構文でクエリを組み立てます。 詳細は『The symfony and Doctrine book 6章 データを扱う』などを参照してください。
削除の確認
アクションの追加ができたら、ブラウザで一覧画面にアクセスして各行の「削除」をクリックしてみてください。 「削除」をクリックすると、JavaScriptの確認ダイアログが表示されます。 このダイアログで「OK」をクリックすると、先ほど追加したdeleteアクションが実行されます。 その後一覧画面にリダイレクトされ、flashメッセージが表示されます。
このように、リンクをクリックしたときにJavaScriptの確認ダイアログを表示するには、link_toヘルパーのconfirmオプションを使います。
インデックス
Document Index
関連ページリスト
Related Pages
- blogチュートリアル(1) Symfonyの準備
- blogチュートリアル(2) データベースの設定
- blogチュートリアル(3) スキーマの定義とテーブルの生成
- blogチュートリアル(4) 追加の設定
- blogチュートリアル(5) mod_rewriteについてと、初期表示の確認
- blogチュートリアル(6) モデルの作成
- blogチュートリアル(7) postモジュールの作成
- blogチュートリアル(8) ビューの作成
- blogチュートリアル(9) 記事の追加
- blogチュートリアル(10) データのバリデーション
- blogチュートリアル(11) 投稿記事の削除
- blogチュートリアル(12) 投稿記事の編集
- blogチュートリアル(13) ルーティング
- blogチュートリアル(14) まとめと応用
日本語ドキュメント
Japanese Documents
- 2011/01/18 Chapter 17 - Extending Symfony
- 2011/01/18 The generator.yml Configuration File
- 2011/01/18 Les tâches
- 2011/01/18 Emails
- 2010/11/26 blogチュートリアル(8) ビューの作成