Transition component for CakePHP.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Transition Component

Build Status


This was versioned as 2.0.


Transition component is a CakePHP component to help your transitional pages logic.

  • For instance, this bears most wizard parts.
  • In almost every case, your method for action can be one-liner as like following codes: public function action(){ $this->Transition->automate('previous_action', 'next_action'); }


  • CakePHP >= 2.0
  • PHP >= 5.2.6


  • CakePHP >= 2.1
  • PHP >= 5.3.2


cd /path/to/root/app/Plugin # or /path/to/root/plugins
git clone git:// Transition


cd /path/to/your_repository
git submodule add git:// plugins/Transition


This component will store any request data into session by default. It means you will have to revalidate all of(or merged)data when saving into your database. However, you can also use "saveDataWhenInvalid" option to not store data when validation was failed.


  • checkData() is to check data(if given) with model validation and auto redirecting
  • checkPrev() is to check previous page's session data exists.
  • automate() is convenient method for checkData() and checkPrev().


  1. Simple Wizard Form

     class UsersController extends AppController{
     	public $components = array('Transition.Transition');
     	// base of user information
     	public function register() {
     		// give a next action name
     	// input enquete
     	public function register_enquete() {
     			'register', // previous action to check
     			'register_confirm', // next action
     			'Enquete' // model name to validate
     	// confirm inputs
     	public function register_confirm() {
     			'register_enquete', // prev
     			'register_save', // next
     				'validationMethod' => 'validateCaptcha', // virtual function to validate with captcha
     		$this->set('data', $this->Transition->allData());
     		$this->set('captcha', createCaptcha()); // virtual function to create a captcha
     	// stroring inputs
     	public function register_save() {
     		// As like this, multi action name can be accepted
     		// mergedData() returns all session data saved on the actions merged
     		if ($this->User->saveAll($this->Transition->mergedData()) {
     			// Clear all of session data TransitionComponent uses
     			$this->Session->setFlash(__('Registration complete !!', true));
     			$this->redirect(array('action' => 'index'));
     		} else {
     			$this->Session->setFlash(__('Registration failed ...', true));
     			$this->redirect(array('action' => 'register'));
  2. Transition among two Controllers

     class FirstController extends AppContoller {
     	public $components = array('Transition.Transition');
     	public function one() {
     		$this->Transition->checkData(array('controller' => 'second', 'action' => 'two'));
     	public function three() {
     			array('controller' => 'second', 'action' => 'two')
     class SecondController extends AppContoller {
     	public $components = array('Transition.Transition');
     	public function two() {
     			array('controller' => 'first', 'action' => 'one'),
     			array('controller' => 'first', 'action' => 'three')