まくまくPHPノート
CakePHP 入門 (8) レコードを編集できるようにする
2012-05-04

ここでは、以下のように ID を指定して、レコードを編集できるようにしてみます。

http://localhost/tasks/edit/1
http://localhost/tasks/edit/2
http://localhost/tasks/edit/3

TasksControlleredit アクションを追加し、それに対応する edit.ctp テンプレートを追加します。

app/Controller/TasksController.php

<?php
class TasksController extends AppController {
    public $components = array('Session');
    ...
    public function edit($id = null) {
        if ($this->request->is('get')) {
            $this->Task->id = $id;
            $this->request->data = $this->Task->read();
        } else {
            if ($this->Task->save($this->request->data)) {
                $this->Session->setFlash('Your post has been updated.');
                $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash('Unable to update your post.');
            }
        }
    }
}

app/View/Tasks/edit.ctp

<h1>Edit Task</h1>
<?php
    echo $this->Form->create('Task');
    echo $this->Form->input('id', array('type' => 'hidden'));
    echo $this->Form->input('title', array('rows' => '1'));
    echo $this->Form->input('body', array('rows' => '3'));
    echo $this->Form->end('Save Task');
?>

ちなみに、edit ページへのリンクは、例えば以下のようにして生成することができます。

$this->Html->link('Edit', array('action' => 'edit', $post['Task']['id']));

CakePHP 入門記事一覧

2012-05-04