cakePHPで確認画面を作成してみた
$_sessionを使用して確認画面を作成しました
参考リンク:http://h2o-space.com/blog/1950
・コントローラーfunction admin_add() {
$shop= new Shop();//addでpostされた値が入っている場合は確認画面に遷移
if (!empty($this->data)) {
$this->Shop->create();//ここでセッションにPOSTの値を代入して保持します
$this->Session->write('shop', $this->data);
$this->set('data',$this->data);
$this->layout = "test";
$this->render('kakunin');
}//普通にアクセスされた場合はこっちを通ります
$statesdata = $shop->statescombo();
$this->set('statesdata',$statesdata);
$this->layout = "test";
//確認画面でなにが不備があって、戻ってきた場合にセッションを使用してデータを再現します。
if ($this->Session->check('shop')) {
$this->data = $this->Session->read('shop');//セッションがかぶらないように、readしたら削除します
unset( $_SESSION["shop"] );
}
}
・kakunin.ctp
<h2>登録内容の確認</h2>
<table>
<tr>
<td>shop1</td>
<td><?php echo h($data['Shop']['shop1']); ?></td>
</tr>
<tr>
<td>shop2</td>
<td><?php echo h($data['Shop']['shop2']); ?></td>
</tr>
</tabre>
<?php echo $form->create('Shop', array('action'=>'check')); ?>
<?php echo $html->link('≪書き直す', 'add/rewrite'); ?>
<?php echo $form->submit('add'); ?>
<?php echo $form->end(); ?>
・確認画面の情報で良い場合はsubmitして、checkアクションに飛ばします
・checkアクションfunction admin_check() {
//セッションに値が入っていない場合は、値を入れないといけないのでaddにリダイレクト
if (!$this->Session->check('shop')) {
$this->redirect('add');
}//入っている場合はセッションから読み込んで、POSTに代入
$this->data = $this->Session->read('shop');//そして、セーブ(登録)します
if ($this->Shop->save($this->data)) {
$this->Session->setFlash(__('The Shop has been saved', true));//登録完了したらセッションを削除して次に備えます
unset( $_SESSION["shop"] );
$this->redirect('admin');
}//記入漏れなどがある場合はaddにリダイレクトします
$this->Session->setFlash(__('missing!', true));
$this->redirect('add');
}
memo
・PHPの閉じタグは消すようにする・下の処理を行ってほしくない場合はreturnする
redirect とか cakeerror とか・ビューなどで、同じ記述をしている場所があれば、外部ファイルに記述して repuireで読み込む
・わからない関数などがあればソースを読むようにする!
$ grep -r 探す単語 ./