I love iPhone, Android, Cocos2d-x
        CakePHP モデルの validation の拡張 同じ項目で違うメッセージを出す
CakePHP のモデルの validation の拡張のメモの続きです。
同じフォームの項目で違うエラーメッセージを出したいときがあります。
例えばユーザ登録フォームでユーザID がフォーマットエラーなのか、既に使用されているのかなどです。
models/users.php
var $validate = array(
        'loginid' => '/^[0-9a-zA-Z]{8}$/',
    );
function validates($data=array()) {
        if(empty($data)) {
            $data = $this->data;
        }
        parent::validates($data);
        // loginid のユニークチェック
        if ($this->findByLoginid($data["User"]["loginid"])) {
            $this->invalidate("loginid_unique");
        }
        if (count($this->validationErrors)>0) {
            return false;
        } else {
            return true;
        }
}
既にloginid が登録済みの場合は
$this->invalidate('loginid_unique'); 
としています。
invalidate に指定するのは実際に存在しないものでも大丈夫なのでそれを使用して view でエラーメッセージを分けて表示します。
views/users/regist.thtml
ID:< ?php echo $html->password('User/loginid'); ?>
< ?php echo $html->tagErrorMsg("User/loginid", "IDは英数字8文字で入力してください"); ?>
< ?php echo $html->tagErrorMsg("User/loginid_unique", "IDは既に使用されています。他のID を指定してください"); ?>
	関連する投稿
One comment
コメントをどうぞ
Additional comments powered by BackType
1ultimately…
…