$model->validateに設定したメッセージが一切表示されない。
保存コードがSJISにいつの間にか・・・。
独自のもので正規表現できないものはモデルに書く
function limitDuplicates($data, $limit){ $existing_promo_count = $this->find( 'count', array('conditions' => $data, 'recursive' => -1) ); return $existing_promo_count < $limit; }
スポンサードリンク
検証
######################################################################### /** * 全角チェック */ ######################################################################### function valid_zen(&$model, &$data) { list($k, $v) = each($data); if($v === '') return TRUE; $v = mb_convert_encoding($v, 'UTF-8'); if (!preg_match("/(?:\xEF\xBD[\xA1-\xBF]|\xEF\xBE[\x80-\x9F])|[\x20-\x7E]/", $v)) { return TRUE; } return FALSE; } ######################################################################### /** * カタカナチェック */ ######################################################################### function valid_kana(&$model, &$data) { list($k, $v) = each($data); if($v === '') return TRUE; $v = mb_convert_encoding($v, 'UTF-8'); if (preg_match("/^(?:\xE3\x82[\xA1-\xBF]|\xE3\x83[\x80-\xB6]|ー)+$/", $v)) { return TRUE; } return FALSE; } ######################################################################### /** * ひらかなチェック */ ######################################################################### function valid_hirakana(&$model, &$data) { list($k, $v) = each($data); if($v === '') return TRUE; $v = mb_convert_encoding($v, 'UTF-8'); if (preg_match("/^(?:\xE3\x81[\x81-\xBF]|\xE3\x82[\x80-\x93])+$/", $v)) { return TRUE; } return FALSE; } ######################################################################### /** * 環境依存文字・旧漢字などJISに変換できない文字チェック */ ######################################################################### function valid_jis(&$model, &$data) { list($k, $v) = each($data); if($v === '') return TRUE; $myEnc = Configure::read('App.encoding'); // 対象外 $v = str_replace(array('~', 'ー', '-', '∥', '¢', '£', '¬'), "", $v); $v2 = mb_convert_encoding($v, 'iso-2022-jp', $myEnc); $v2 = mb_convert_encoding($v2, $myEnc,'iso-2022-jp'); if ($v == $v2) { return TRUE; } return FALSE; }
参考文献
- CakePHP Behaviorでバリデーション周りの効率化を図る : エクスギア Blog
- 漠なままで行こうъ( ゜ー^) – 全角のvalidate
- 12章 データバリデーション
- [CakePHP]validateでエラーメッセージが表示されない – わんコロ餅。
- 組み込みのバリデーションルール(Validation Rules) :: データのバリデーション(Data Validation) :: CakePHPによる作業の定石 :: マニュアル :: 1.2 Collection :: The Cookbook
- 1個のフィールドに複数のルールを定義する :: データのバリデーション(Data Validation) :: CakePHPによる作業の定石 :: マニュアル :: 1.2 Collection :: The Cookbook
- 【CakePHP】バリデーションルールの自動作成:『私的』 Bake Modelツール
- CakePHP guide » required と allowEmpty の違い
コメント