CakePHPまとめ@Wiki

確認画面を挟む

最終更新:

nezox

- view
管理者のみ編集可

全然更新してなくてごめんなさい。。
最近は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)を作成します。

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>
目安箱バナー