http://〇〇/edit/番号という形で記述してアクセスをします。例えば、ID = 1のデータを編集したければ、〇〇/edit/1としてアクセスすると、ID = 1のデータがフォームに設定された状態で画面現れます。ここで内容を編集し、送信すれば、データが更新されます。
$this->MySampleData->id = $id;これにより、MySampleDataには指定のIDのデータが設定されます。このままフォームを送信されていなかったならば、以下のようにしてModelクラスに指定のデータを読み込み、それをrequestのdataに設定します。
$this->request->data =requestのdataには、既に説明したようにフォームのデータが保管されています。ここに、Modelから読み込んだデータを設定することで、画面に出力されたフォームに所定の値があらかじめ表示されるようになります。
$this->MySampleData->read(null, $id);
if ($this->request->is('post')requestに”post”があるかどうかだけでなく、requestに”put”が存在したかどうかをチェックしています。これにより更新時のデータ保存がきちんと機能するようになります。
$this->request->is('put'))
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
※edit.ctp <h1>Edit Page</h1> <p>MySampleData Edit Form.</p> <?php echo $this->Form->create('MySampleData'); echo $this->Form->input('id'); echo $this->Form->input('name'); echo $this->Form->input('mail'); echo $this->Form->input('tel'); echo $this->Form->end('Submit'); ?> ※editメソッド public function edit($id) { // レイアウト関係 $this->layout = "Sample"; $this->set("header_for_layout", "Sample Application"); $this->set("footer_for_layout", "copyright by SYODA-Tuyano. 2011."); // post時の処理 $this->MySampleData->id = $id; if ($this->request->is('post') || $this->request->is('put')) { $this->MySampleData->save($this->request->data); $this->redirect(array('action' => 'index')); } else { $this->request->data = $this->MySampleData->read(null, $id); } }
<< 前へ | 次へ >> |