test

CakePHP Note

Update(更新)

UPDATE:2008.04.09

editアクション1つで、レコードの更新あるいは更新用フォーム表示のどちらか1つを行ないます。

フォームから更新用データが送信された場合$this->dataにデータが入ってきます。$this->dataが入っていればレコードを更新し、$this->dataにデータが入っていなければデータを読み込み$this->dataにデータをセットして更新用フォームを表示します。$this->dataにデータをセットする事で更新用フォームにデータがセットされます。

class PostsController extends AppController {

    function edit($id = null) {
        if (!$id && empty($this->data)) {
            $this->Session->setFlash(__('Invalid Post', true));
            $this->redirect(array('action'=>'index'));
        }
        if (!empty($this->data)) {
            if ($this->Post->save($this->data)) {
                $this->Session->setFlash(__('The Post has been saved', true));
                $this->redirect(array('action'=>'index'));
            } else {
                $this->Session->setFlash(__('The Post could not be saved. Please, try again.', true));
            }
        }
        if (empty($this->data)) {
            $this->data = $this->Post->read(null, $id);//$this->dataにデータをセットするとフォームにもセットされる。
        }
    }
}