- 2009年8月17日 4:10 PM
- CakePHP
引き続きチュートリアルの実践。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 より