CakePHP のモデルの validation の拡張のメモです。

ユーザ登録フォームなどでパスワードの再確認のバリデーションを行うときの方法です。

views/users/regist.thtml

パスワード:< ?php echo $html->password('User/password'); ?>
確認用パスワード:< ?php echo $html->password('User/password2'); ?>
< ?php echo $html->tagErrorMsg('User/password2', 'パスワードが一致しません');

※users テーブルにpassword2 のカラムはなくてかまいません。

models/users.php

function validates($data=array()) {
        if(empty($data)) {
            $data = $this->data;
        }

        parent::validates($data);

        if ($data["User"]["password"]!==$data["User"]["password2"]) {
            $this->invalidate("password2");
        }

        if (count($this->validationErrors)>0) {
            return false;
        } else {
            return true;
        }
}

AppModel クラスの validation メソッドも実行する必要があるので、必ず
parent::validates($data);
を書かないといけません。

関連する投稿