edo1z blog

プログラミングなどに関するブログです

cakePHP Transitionプラグインのautomate関数の使い方

Transitionプラグインは便利ですね。ソースコードがかなりすっきりします。 セッションをつかって、ページ遷移と、ページ毎に入力された内容を記録してきれるので、ページ遷移チェックと、入力内容の取り扱いが楽になります。

さて、$this->Transition->automate('register','complete', null);という関数を使ってエラーが出ていたのでメモします。

public function automate($prev, $nextStep, $options = array(), $validationMethod = null, $messages = null)

この関数は、第一引数に前のページ、第二引数に次のページ、第三引数にバリデーションチェックするモデルを入れます。第四引数にバリデーションメソッド、第五引数にエラーメッセージも入るようです。第三引数がnullというのはカレントモデルを使うという意味です。なのでこの関数はnullと入れてもカレントモデルでチェックします。$this->request->dataの中身をバリデーションチェックします。

register画面で入力してもらい、confirm画面で入力内容を確認してもらい、completeでDBに保存して終了画面を出すという流れのときに、confirmで$this->Transition->automate('register','complete', null);を使う場合は、この関数を使う前に、下記のようにやります。

$this->request->data = $this->Transition->mergedData();

こうすればregister画面で入力された内容が、$this->request->dataに入るので、automate関数で行われるバリデーションチェックがとおるようになります。

これで、confirm画面のviewで、ごちゃごちゃ$this->request->dataにhiddenで入れるような必要がなくなります。