ECWorks Blog

ECWorks Blog

CakePHPを中心としたサイト開発情報をメインに公開。新しもの好きなので時々製品レポートなんかも。

【CakePHP】組み込みバリデーションを勝手利用する

cake-logo久しぶりにCakePHP本体のTipsなんかを。

現在ちょっとトリッキー(?)なバリデーションの利用を想定していまして、Model内の$validateプロパティでの指定以外で同機能が使えないものかと調べていました。
組み込みバリデーションは、全て「cake/libs/validation.php内にあるようで、こいつをインポートして直接メソッドを呼び出すだけで何処でも使えるようです。

例えばこんな感じです。

App::import('Core', 'Validation');
class FooController extends AppController {
var $name = 'Foo';

//省略

function hoge(){
//バリデーションの利用
if(Validation::alphaNumeric($check)){
echo "OK牧場";
}

}

なお、場所によってはimport()はいらないかもしれません。

使いどころでは、条件付きでバリデーションを行いたいときですね。
実例を挙げますと、今回管理画面で「新パスワードが入力されたときだけ、新パスワードと確認パスワードをチェックして、問題なければAuthでhashしてsaveする(つまり新パスワードが空の時はパスワード変更処理を除外する)」というのをやっていて、全てをバリデーションルール内で行うのが難しいためです。なので、バリデーションルールから外に出して、関数を直接呼んでチェックしよう、というわけです。

今回は極端な例として、コントローラ内で使用していますが、一般的にはモデル内に独自関数を作ってその中でやった方が良いかもですね。


Tagged as: , ,

Comments are closed.