便利らしい。調べよう。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