zaininnari / transition_component
CakePHP TransitionComponent 插件
dev-master
2013-04-14 06:02 UTC
Requires
- php: >=5.3.0
- composer/installers: *
This package is not auto-updated.
Last update: 2024-09-14 14:29:37 UTC
README
版本
由 hiromi2424 创建的原版本为 2.2.0。已分支https://github.com/hiromi2424/TransitionComponent
这是版本 2.2.0。
简介
过渡组件是一个 CakePHP 组件,用于帮助您管理过渡页面的逻辑。
- 例如,这包含了大多数向导部分。
- 在几乎所有情况下,您的方法可以像以下代码一样一行代码:public function action(){ $this->Transition->automate('previous_action', 'next_action'); }
需求
- CakePHP >= 2.0
- PHP >= 5.3.2
- 不支持 PHP 5.2
推荐
- CakePHP >= 2.2
- CakePHP 2.3.2 支持
- PHP >= 5.3.2
- PHP 5.4 支持
设置
cd /path/to/root/app/Plugin # or /path/to/root/plugins
git clone git://github.com/zaininnari/TransitionComponent.git TransitionComponent
或者
cd /path/to/your_repository
git submodule add git://github.com/zaininnari/TransitionComponent.git plugins/TransitionComponent
摘要
- checkData() 用于检查(如果提供)数据与模型验证,并自动重定向
- checkPrev() 用于检查前一个页面的会话数据是否存在。
- automate() 是 checkData() 和 checkPrev() 的便捷方法。
示例
-
简单向导表单
class UsersController extends AppController{ public $components = array('Transition.Transition'); // base of user information public function register() { // give a next action name $this->Transition->checkData('register_enquete'); } // input enquete public function register_enquete() { $this->Transition->automate( 'register', // previous action to check 'register_confirm', // next action 'Enquete' // model name to validate ); } // confirm inputs public function register_confirm() { $this->Transition->automate( 'register_enquete', // prev 'register_save', // next array( '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 $this->Transition->checkPrev(array( 'register', 'register_enquete', 'register_confirm' )); // 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->Transition->clearData(); $this->Session->setFlash(__('Registration complete !!', true)); $this->redirect(array('action' => 'index')); } else { $this->Session->setFlash(__('Registration failed ...', true)); $this->redirect(array('action' => 'register')); } } }
-
两个控制器之间的过渡
class FirstController extends AppContoller { public $components = array('Transition.Transition'); public function one() { $this->Transition->checkData(array('controller' => 'second', 'action' => 'two')); } public function three() { $this->Transition->checkPrev(array( 'one', array('controller' => 'second', 'action' => 'two') )); } } class SecondController extends AppContoller { public $components = array('Transition.Transition'); public function two() { $this->Transition->automate( array('controller' => 'first', 'action' => 'one'), array('controller' => 'first', 'action' => 'three') ); } }