hiromi2424 / transition
过渡组件是一个用于帮助您实现过渡页面逻辑的 CakePHP 组件。
2.0
2014-11-14 08:46 UTC
Requires
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-14 16:30:39 UTC
README
版本
这个版本标记为 2.0。
简介
过渡组件是一个用于帮助您实现过渡页面逻辑的 CakePHP 组件。
- 例如,这包含了大多数向导部分。
- 在几乎所有情况下,您的动作方法可以像以下代码一样简单: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://github.com/hiromi2424/TransitionComponent.git Transition
或者
cd /path/to/your_repository
git submodule add git://github.com/hiromi2424/TransitionComponent.git plugins/Transition
注意
默认情况下,此组件会将任何请求数据存储到会话中。这意味着您必须在保存到数据库时重新验证所有(或合并)数据。但是,您也可以使用 "saveDataWhenInvalid" 选项在验证失败时不存储数据。
摘要
- 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') ); } }