$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 の違い


コメント