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')
$this->request->is('put'))requestに”post”があるかどうかだけでなく、requestに”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);
}
}
| << 前へ | 次へ >> |