- 2009年8月17日 2:08 PM
- CakePHP
今回はタスクの追加機能を実装する。(前回に引き続き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();
?>
ブラウザをリロードすると、以下のようになった。
コントローラにaddアクションを追加する
tasksコントローラのaddアクションとして、フォームから送信されたデータを追加する機能を実装する。
ちなみに、addアクションを追加前にtodoを追加投稿してみると、以下のように親切なエラーがブラウザ上で表示される。(addアクションがありませんよ、と)
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一覧ページへとぶ。
ToDo一覧部分を見ると、たしかに追加したToDoが確認できる。
次のエントリで「タスクの状態変更」を開発する。
コメント: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 より



