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 探す単語 ./