cakephpのmodelのminLength,maxLengthが微妙。
10 月 17, 2008
ちょっとだけ。
今日、modelのvalidation使って、minLengthとmaxLengthを使おうとしたのだが、挙動が微妙。
ソースを見てたらこんな感じ。
CAKE_PATH/libs/validation.php
function minLength($check, $min) { $length = strlen($check); return ($length >= $min); } function maxLength($check, $max) { $length = strlen($check); return ($length <= $max); }
なるほどな。stlenか。そりゃおかしいわけだ。海外ってマルチバイト対応しなくていいのかなーというかどの環境でも動くようにという配慮かな。
とりあえず回避策として・・・validation.phpにマルチバイト対応の関数を追加。SJISのフォームから送られてくること前提で。
function mbminLength($check, $min) { $check = mb_convert_kana($check, "KVA", "SJIS-win"); $length = mb_strwidth($check); return ($length > $min); }
ついでにreturn部分の「>=」から「>」に変更した。
そっちのほうが都合がよさそうだったので。
あとはmodelのvalidationで rule=>”mbminLength”と指定すればOK.
動作保障はないよ!
Tags: cakephp
コメントはまだありません »
このコメント欄の RSS フィード — トラックバック URL
コメントはまだありません。
コメントをどうぞ