[CakePHP]Transitionコンポーネントでバリデーションを効かせるモデルを指定

またバリデーションネタ。
cakephpでフォーム作成の際に、Transitionコンポーネントを使用するとすこぶる便利。
以下が使い方としてはわかりやすかった。
cakePHP Transitionコンポーネント – Logicky Blog

で、その中で、入力画面から確認画面に遷移する際に指定したバリデーションルールを適用させたかった。
たいていのサイトでは、$this->Transition->checkData('xxx')を使えばよい、と書いてあったのだが、それだと効かなかった。
原因を探していると、どうやら使用しているコントローラーで複数のモデルを使用していると効かないよう。
そんなときはcheckDataの第2引数でモデルを明示的に指定してやると効くようになった。

1
2
3
4
5
6
7
8
9
class FormController extends AppController
{
  public $uses = array('User', 'Hoge', 'Fuga');
  
  public function input(){
      $this->Transition->checkData('confirm','Hoge');
      ...
  }
}

上記のように書くと、Hogeモデルで記述したバリデーションが適用される。
ここを配列にして複数のモデルを指定してやることも可能だそう。

[PHP][CakePHP] Transitionコンポーネント – checkData() について

それにしてもこのコンポーネントはびっくりするくらい便利。ほんとに。

   このエントリーをはてなブックマークに追加