ホーム > CakePHP > CakePHPでToDo管理アプリケーションを作る[2]

CakePHPでToDo管理アプリケーションを作る[2]

今回はタスクの追加機能を実装する。(前回に引き続きgihyo.jpのチュートリアル)
http://gihyo.jp/dev/serial/01/cakephp/0006

入力フォームを作る

app/views/tasks/index.ctpを書き換え、ToDo一覧ページにToDoの追加フォーム部分を設置する。(以下の記述を既存のコードの前に追加する)

※チュートリアルどおりのコードだとhelperのエラーが出てしまうので、前にやってみた別のチュートリアル(CakePHPのversionは1.2系)のものを参考に以下のように書き換えた。

app/views/tasks/index.ctp

create();
echo $form->input('content');
echo $form->submit('タスクを追加');
echo $form->end();
?>

ブラウザをリロードすると、以下のようになった。

todo_004

コントローラにaddアクションを追加する

tasksコントローラのaddアクションとして、フォームから送信されたデータを追加する機能を実装する。

ちなみに、addアクションを追加前にtodoを追加投稿してみると、以下のように親切なエラーがブラウザ上で表示される。(addアクションがありませんよ、と)

todo_005

app/controllers/tasks_controller.php
既存の「function index()」メソッドの次に、以下のようにfunction add()メソッドを追加する。

    // addアクションを追加
    function add() {
        // モデルへの値が渡されているかチェック
        if (!empty($this->data)) {

            // saveメソッドによりDBへのレコード追加を実行
            // 第二引数のtrueの部分はバリデーション機能を使用するかどうかで、デフォではtrue
            // バリデーションは後々実装予定なので、ここではtrueにしておく
            // 第三引数はレコードをインサートする際のカラムの指定
            // 必須ではないが、指定することで予期しないカラムへの値のセットを回避できる
            if ($this->Task->save($this->data, true, array('content', 'created', 'modified'))) {

                // コントローラのflashメソッドを利用して簡易なリンク付きメッセージを表示
                // メッセージ部分がtodo一覧ページ(/tasks)へのリンクとなって表示される
                $this->flash('タスクが追加されました', '/tasks');
                return;
            }
        }
        // $this->dataに値がないか、saveに失敗したときはリダイレクト
        // 予期しないリクエストや問題が起きた際にはToDo一覧ページへリダイレクトする
        $this->redirect('/tasks');
    }

「追加のテスト。」という内容で、ブラウザで実際にタスクを追加してみる。

todo_006

「タスクが追加されました」部分をクリックするとToDo一覧ページへとぶ。

ToDo一覧部分を見ると、たしかに追加したToDoが確認できる。

todo_007

次のエントリで「タスクの状態変更」を開発する。

コメント:0

コメントフォーム
入力した情報を記憶する

トラックバック:0

この記事のトラックバック URL
http://showzine.info/blog/2009/08/cakephp%e3%81%a7todo%e7%ae%a1%e7%90%86%e3%82%a2%e3%83%97%e3%83%aa%e3%82%b1%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e4%bd%9c%e3%82%8b2.html/trackback
トラックバックの送信元リスト
CakePHPでToDo管理アプリケーションを作る[2] - SHOWJIN*BLOG より

ホーム > CakePHP > CakePHPでToDo管理アプリケーションを作る[2]

検索
フィード

ページの上部に戻る