Transitionコンポーネント - automate() について
checkData/checkPrevに続いて Transition#automate ですが、これまたおおざっぱにいうと checkPrev した後に checkData をしてくれるメソッドになります。
またまた適当に展開したコード
class FooController extends AppController { public $uses = 'Foo'; : public function step2() { // $this->Transition->automate('step3', 'Bar', 'step1') のおおざっぱな展開コード $this->Transaction->checkPrev('step1'); $this->Transaction->checkData('step3', 'Bar'); } }
さらに展開するとこんな感じかな
class FooController extends AppController { public $uses = 'Foo'; : public function step2() { // $this->Transition->automate('step3', 'Bar', 'step1') のおおざっぱな展開コード $data = $this->Session->read('session_key'); if (!isset($data['Foo']['step1']) { $this->redirect('step1'); } if (!empty($this->data)) { $this->Bar->set($this->data); if ($this->Bar->validates()) { $this->Session->write('session_key.Foo.step2', $this->data); $this->redirect('step3'); } } } }
これだけのコードを1行で書けるってのはやっぱり素敵ですね。