Yii に関する覚え書き (バリデーションルール:length編)

ドキュメントをよく読め、ということです。

バリデーションの設定で、以下のような設定を書いた場合、username の長さが3以上かつ12以下であることをチェックする。

array('username', 'length', 'min'=>3, 'max'=>12),

始め、"長さ"というのは文字数のことであって、バイト数ではないということに気づいてバイト数をチェックするバリデータクラスを作った。

その後、何気なくソースコードを見てみると、バリデータクラスには encoding というプロパティがあって、それが false の場合はバイト数のチェックになるということがわかった。

ドキュメントを見ると、

If this property is set false, then strlen() will be used even if mbstring is enabled.

なんてことが書いてある。わざわざバイト数をチェックするバリデータクラスを作らなくても、'enncoding' = false を設定するだけでよかったのだ。

array('username', 'length', 'min'=>3, 'max'=>12, 'encoding' => false),