CakePHPまとめ@Wiki
確認画面を挟む
最終更新:
nezox
-
view
全然更新してなくてごめんなさい。。
最近はAkelosを使っています。
最近はAkelosを使っています。
bakeで自動生成されたaddアクションは下記のようになります。
function add() { if(empty($this->data)) { $this->set('login', null); } else { $this->cleanUpFields(); if($this->Login->save($this->data)) { if(is_object($this->Session)) { $this->Session->setFlash('The Login has been saved'); $this->redirect('/login/index'); } else { $this->flash('Login saved.', '/login/index'); } } else { if(is_object($this->Session)) { $this->Session->setFlash('Please correct errors below.'); } $data = $this->data; $this->set('login', $data); } } }
このままでは、入力情報がDBに保存される前に確認画面は表示されません。しかし、確認画面が必要な場面もあります。
以下のように書き換え、確認画面のView(confirm.thtml)を作成します。
以下のように書き換え、確認画面のView(confirm.thtml)を作成します。
function add() { if(empty($this->data)) { $this->set('login', null); } else { $this->cleanUpFields();// ? if(@$_POST['mode']=='confirm') { if(!$this->Login->validates($this->params['data'])) { $this->render(); } else { $this->set('form', $this->params['form']); $this->set('data', $this->params['data']); $this->render("confirm"); } } else { if ($this->Login->save($this->params['data'])) { $this->redirect('/login'); } else { $this->set('data', $this->params['data']); $this->validateErrors($this->Login); $this->render(); } } } }
confirm.thtml
<h1>新規作成:確認画面</h1> <form action="<?php echo $html->url('/login/add'); ?>" method="post"> <div class="required"> <label for="login_login_id">ログインid</label> <?php echo $html->tagValue('Login/login_id') ?> <?php echo $html->hidden('Login/login_id', array('value' => $html->tagValue('Login/login_id')))?> </div> <div class="login_password"> <label for="recommend_content">パスワード</label> <?php echo $html->tagValue('Login/password') ?> <?php echo $html->hidden('Login/password', array('value' => $html->tagValue('Login/password')))?> </div> <div class="submit"> <input type="button" value="戻る" onclick="history.go(-1)" /> <input type="submit" value="作成" /></div> </form> <ul> <li><a href="/sys/index.php/recommend/">一覧へ戻る</a></li> </ul>