WebプログラミングV

 目次へ 前へ 次へ

2014/1/14 久米

VCakePHP

4. 追加・編集・削除 

本節で初めて出てくるメソッド とプロパティ

クラス メソッド プロパティ 備考
C AppController redirect request  
M AppModel save
findById
delete
   
V View   Form  
CakeRequest is
data
data  
FormHelper create
input
end
   

4.1 追加

  ファイル コード例 備考
C app>Controller>
NekoYohinsController.php
<?php

class NekoYohinsController extends AppController {

	public function index() {
		$datas = $this->NekoYohin->find('all');
		$this->set('ds',$datas);
	}

	public function add() {
		if ($this->request->is('post')) {
		// post時の処理
			$this->NekoYohin->save($this->request->data);
			$this->redirect(array('action' => 'index'));
		}
		//単にページを開いた時の処理
		//なにもせず、ただview>add.ctpを表示するのみ
	}
}
 
M app>Model>
NekoYohin.php
無ければデフォルトでオブジェクト生成してくれるので。今回は不要  
V
その1
app>View>
NekoYohins>index.ctp

3.1の全検索と同じもの
<h1>猫用品</h1>
<table>
<?php foreach ($ds as $d): ?>
<tr>
<td><?php echo $d['NekoYohin']['id']; ?></td>
<td><?php echo $d['NekoYohin']['name']; ?></td>
<td><?php echo $d['NekoYohin']['kind']; ?></td>
<td><?php echo $d['NekoYohin']['price']; ?></td>
</tr>
<?php endforeach; ?>
</table>
 
V
その2
app>View>
NekoYohins>add.ctp
<h1>猫用品</h1>
<p>追加フォーム</p>
<?php
echo $this->Form->create('NekoYohin');
echo $this->Form->input('name', array('label' => '名前'));
echo $this->Form->input('kind', array('label' => '種類'));
echo $this->Form->input('price', array('label' => '価格'));
echo $this->Form->end('追加');
?>
 
  アクセス http://localhost/web3cake/neko_yohins/add  


4.2 編集

http://ホスト名/アプリケーション/テーブル/アクション/引数1/引数2/・・

http://localhost/web3cake/neko_yohins/edit/3
とするとNekoYohinsControllerのedit関数が実行される。この時引数$idに3が入って実行される。

  ファイル コード例 備考
C app>Controller>
NekoYohinsController.php
<?php

class NekoYohinsController extends AppController {

	public function index() {
		$datas = $this->NekoYohin->find('all');
		$this->set('ds',$datas);
	}

	public function edit($id) {
		if ($this->request->is('post') || $this->request->is('put')) {
		// post時の処理
			$this->NekoYohin->save($this->request->data);
			$this->redirect(array('action' => 'index'));
		} else { //単にページを開いた時の処理
			$this->request->data = $this->NekoYohin->findById($id);
		}
	}
}
 
M app>Model>
NekoYohin.php
無ければデフォルトでオブジェクト生成してくれるので。今回は不要  
V
その1
app>View>
NekoYohins>index.ctp

3.1の全検索と同じもの
<h1>猫用品</h1>
<table>
<?php foreach ($ds as $d): ?>
<tr>
<td><?php echo $d['NekoYohin']['id']; ?></td>
<td><?php echo $d['NekoYohin']['name']; ?></td>
<td><?php echo $d['NekoYohin']['kind']; ?></td>
<td><?php echo $d['NekoYohin']['price']; ?></td>
</tr>
<?php endforeach; ?>
</table>
 
V
その2
app>View>
NekoYohins>edit.ctp
<h1>猫用品</h1>
<p>編集フォーム</p>
<?php
echo $this->Form->create('NekoYohin');
echo $this->Form->input('id');//idはhiddenで表記される。idはどの行を編集するかに必要
echo $this->Form->input('name', array('label' => '名前'));
echo $this->Form->input('kind', array('label' => '種類'));
echo $this->Form->input('price', array('label' => '価格'));
echo $this->Form->end('編集');
?>
 
  アクセス http://localhost/web3cake/neko_yohins/edit/1  


4.3 削除

  ファイル コード例 備考
C app>Controller>
NekoYohinsController.php
<?php

class NekoYohinsController extends AppController {

	public function index() {
		$datas = $this->NekoYohin->find('all');
		$this->set('ds',$datas);
	}

	public function del($id) {
		if ($this->request->is('post') || $this->request->is('put')) {
		// post時の処理
			$this->NekoYohin->delete($this->request->data('NekoYohin.id'));
			$this->redirect(array('action' => 'index'));
		} else { //単にページを開いた時の処理
			$this->request->data = $this->NekoYohin->findById($id);
		}
	}
}
delのpostで
data[NekoYohin][id]
が飛んでくる。
それを
data('NekoYohin.id')
で参照できる
M app>Model>
NekoYohin.php
無ければデフォルトでオブジェクト生成してくれるので。今回は不要  
V
その1
app>View>
NekoYohins>index.ctp

3.1の全検索と同じもの
<h1>猫用品</h1>
<table>
<?php foreach ($ds as $d): ?>
<tr>
<td><?php echo $d['NekoYohin']['id']; ?></td>
<td><?php echo $d['NekoYohin']['name']; ?></td>
<td><?php echo $d['NekoYohin']['kind']; ?></td>
<td><?php echo $d['NekoYohin']['price']; ?></td>
</tr>
<?php endforeach; ?>
</table>
 
V
その2
app>View>
NekoYohins>del.ctp
<h1>猫用品</h1>
<p>削除フォーム</p>
<?php
echo $this->Form->create('NekoYohin');
echo $this->Form->input('id');
echo $this->Form->input('name', array('label' => '名前'));
echo $this->Form->end('削除');
?>
 
  アクセス http://localhost/web3cake/neko_yohins/del/5  

 

演習4

  1. 演習1で作った××の××cakeアプリを改造して、追加、編集、削除を作ってみよ。