CakePHPでハマったことその3(バリデーション)

CakePHPでハマったことその3もバリデーションです。 メンバメソッドを作ることで自分なりのバリデーションを作ることが出来ます。 その際メンバメソッドに渡されるデータが生のdataではなくarray(‘カラム名’ => data)なところでハマりました。

具体的には、

var $validate = array(
       'name' => array(
               VALID_NOT_EMPTY,
               'length' =>array(
                       'rule' =>array('between', 2, 50),
                       'message' => '名前は2-50文字までです',
               ),
               'kaigyo' => array(
                       'rule' => array('kaigyoLessThanN', 0),
                       'message' => '名前は改行できません',
               ),
       ),
);
//改行n以下のバリデート
function kaigyoLessThanN($data, $numKaigyo)
{
       $bool = false;
       $pattern = "`\r\n|\n|\r`u";
       $count = preg_match_all($pattern, $data, $array);
       if($count === false){
       }elseif($count <= $numKaigyo){
               $bool = true;
       }
       return $bool;
}

のバリデートが期待通りに動きませんでした。連想配列が渡されるので以下のように修正することで期待通り動くようになりました。改行の数を数えるので4行以内にしたい場合にはパラメータで3を渡せばOKです。

//改行n以下のバリデート
function kaigyoLessThanN($data, $numKaigyo)
{
       $bool = false;
       $pattern = "`\r\n|\n|\r`u";
       $count = preg_match_all($pattern, current($data), $array);
       if($count === false){
       }elseif($count <= $numKaigyo){
               $bool = true;
       }
       return $bool;
}
広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中