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

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

引き続きチュートリアルの実践。1.1と1.2では若干異なる部分があって、そこを変更しつつなんとかいまのところは無事進めてるかなぁ。

http://gihyo.jp/dev/serial/01/cakephp/0007

◎今回は以下の機能を実装
・タスクの完了
・タスクの削除
・タスクの編集
・完了と未完了のタスクを分離

Tasksコントローラの修正

Tasksコントローラのindexアクションを修正する。それから、あらたにdoneアクション、editアクション、delアクションを追加。(addアクションに変更はなし)

app/controllers/tasks_controller.php
indexアクションを以下のように修正

    function index() {
        $this->set('yet_tasks', $this->Task->findAllByStatus('yet', null, 'Task.created ASC'));
        $this->set('done_tasks', $this->Task->findAllByStatus('done', null, 'Task.modified DESC'));
    }

doneアクション、editアクション、delアクションを追加

    // doneアクションを追加
    function done($id) {
        if ($this->Task->findAllById($id)) {
            $this->Task->id = $id;
            $this->Task->save(array('status' => 'done'));
        }
        $this->redirect('/tasks');
    }

    // editアクションを追加
    function edit($id) {
        $task = $this->Task->findById($id);
        if (!$task) {
            $this->redirect('/tasks');
            return;
        }
        if (!empty($this->data)) {
            $task['Task']['content'] = $this->data['Task']['content'];
            $this->Task->save($task);
        }
        $this->set('task', $task);
    }

    // delアクションを追加
    function del($id) {
        $this->Task->del($id);
        $this->redirect('/tasks');
    }

indexビューの修正

app/views/tasks/index.ctp

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

未完了タスク

Id タスク内容 状態 操作 作成日
link('完了', '/tasks/done/'.$task['Task']['id'], null, '完了してもいいですか?') ?> link('編集', '/tasks/edit/'.$task['Task']['id']) ?> link('削除', '/tasks/del/'.$task['Task']['id'], null, '削除してもいいですか?') ?>

完了タスク

Id タスク内容 状態 操作 作成日
link('削除', '/tasks/del/'.$task['Task']['id'], null, '削除してもいいですか?') ?>

editビューの作成

タスク内容の編集画面用ビュー(editアクション用)として、新規に以下のphpファイルを作成する。

※この部分はチュートリアルのコードどおりではうまくいかないので、色々調べて大幅に記述を変えて対応した。HtmlHelperが1.1から1.2で大幅に変更されて、フォームに関するヘルパーはFormHelperとして新設された項目へ移動したらしい。(マニュアルでは「主要なヘルパー > フォーム」にある)

app/views/tasks/edit.ctp

タスク内容の編集

タスク一覧へ戻る create('Task', array('action'=>'edit/'.$task['Task']['id'])); echo $form->hidden('id', array('value'=>$task['Task']['id'])); ?>

タスク内容

textarea('content', array('cols'=>'60', 'rows'=>'3', 'value'=>$task['Task']['content'])); ?> end('保存'); ?>

各種操作を実行してみる

ToDo項目の完了、編集、削除を実際に実行してみる。

form要素のヘルパーが1.1から1.2で大幅に変わっていたのでビューファイルをそれ用に書き換えるでちょっと苦労したけれど、おかげでマニュアルのどこを見ればいいかが分かったので良かった。

コメント: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%8b3.html/trackback
トラックバックの送信元リスト
CakePHPでToDo管理アプリケーションを作る[3] - SHOWJIN*BLOG より

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

検索
フィード

ページの上部に戻る