Pocket
LINEで送る

便利らしい。調べよう。fileBinderの例文で使われているので調べた。多分これだろう。

24時間cakePHP Transitionコンポーネント1.0

24時間cakePHPといのはいい名前だな。

↓TransitionComponentの紹介記事
TransitionComponent for CakePHPで簡単確認画面実装

Transition Componentは、セッションと、主にCakePHPのモデルバリデーションの機能を利用してページ遷移を管理しており、
使いこなすとページ遷移管理を非常にすっきりとしたコードで実現することができます。

これはフォーム入力→確認画面→完了画面みたいなやつをすっきりと書けるということだなー!いいねえ。

追記:cakePHP2.3でTransitionコンポーネントを使ってみる

使ってみたらかなり便利だった。まだ初歩的な使い方しかしてないけど。
特にモデルに特別なことを追記するような必要はない。
コントローラーでTransitionコンポーネントを呼び出して、使えばいいだけ。

コントローラー UsersController.php

class UsersController extends AppController {
	public $components = array('Session', 'Filebinder.Ring','Transition.Transition');
	
	//ユーザ登録画面
	public function index(){
		$this->Ring->bindUp();
		$this->Transition->checkData('confirm');
	}
	
	//確認画面
	public function confirm(){
		$this->Transition->automate('index','save','User');
		$this->set('data', $this->Transition->allData());
	}
	
	//登録完了画面
	public function save(){
		$this->Transition->checkPrev(array('index','confirm'));
		if($this->User->saveAll($this->Transition->mergedData())){
			$this->Transition->clearData();
		}else{
			$this->Session->setFlash('登録できませんでした。恐れ入りますが再度お試しください。');
			$this->redirect(array('action' => 'index'));
		}
	}
}

ビュー(ユーザー登録画面の最初の画面)index.ctp

<h2>ユーザー登録</h2>

<div class="posts form">
<?php echo $this->Form->create('User', array('action'=>'index','type' => 'file'));?>
<?php echo $this->Form->input('username');?>
<?php echo $this->Form->input('photo', array('type' => 'file'));?>
<?php echo $this->Form->submit('Submit');?>
<?php echo $this->Form->end();?>
</div>

ビュー(登録内容確認画面) confirm.ctp

<h2>確認画面</h2>

<?php $u = $data['users']['index']['User']?>

<table>
<tr>
	<td>名前</td>
	<td><?php echo h($u['username'])?></td>
</tr>
<tr>
	<td>ファイル</td>
	<td><?php echo $u['photo'] ? '添付あり' : '添付なし'?></td>
</tr>
</table>

<?php echo $this->Form->create('User',array('action'=>'confirm'));?>
<?php echo $this->Form->hidden('dummy');?>
<?php echo $this->Form->end('登録');?>

ビュー(登録完了画面) save.ctp

<h2>無料登録</h2>
<p>登録が完了しました。ありがとうございました!</p>

参考:
[PHP][CakePHP] とっても便利なTransitionコンポーネント
hiromi2424 / TransitionComponent

Pocket
LINEで送る

カテゴリー: プログラミング

コメントください

関連記事

プログラミング

cakePHP2 – 多言語化

多言語化します。 cakephpマニュアルのこのページに説明が書いてあ 続きを読む …

プログラミング

Go言語によるビットコインのフルノード実装btcdを調べる(2)

btcdを実行した際のプログラムの流れを最初から確認してみます。 se 続きを読む …

%d人のブロガーが「いいね」をつけました。