とあるセクシーなデータ分析官

を目指す渋谷で働くソーシャルゲーム分析者の卵

cake焼きました(19)

「バリデーションのmaxlength」

入力された文字数が多かったらはじくために
バリデーションのmaxlengthを記述しているのですが、
どうにもこうにも制限20文字のつもりが7文字でアウト


調べた結果。
どうやらmaxlength,minlengthの引数の数字はバイト数を表しているそうです。
たとえばUTF-8の全角だと3バイト使っているので、
3 * 7 = 21バイトでバリデーションに引っかかっていたようです。


ソースはこんな感じで落ち着きました。

    var $validate = array($
            'keyword' => array($
                array($
                    'rule' => 'notEmpty',$
                    'message' => 'キーワードを入力してください'$
                ),$
                array($
                    'rule' => array('maxLength', 60),$
                    'message' => '20文字以内で入力してください'$
                ),$
            ),$
            'eat' => array($
                'rule' => 'notEmpty',$
                'message' => '食べ方を選択してください'$
            ),$
            'category' => array($
                'rule' => 'notEmpty',$
                'message' => 'カテゴリを選択してください'$
            )$
    );$


参考:http://q.hatena.ne.jp/1115052744