Pages

2009年9月15日火曜日

Zend_Validate NotEmptyでは0を正確にチェックできない時がある。

NotEmpty というだけに0が入力されても普通はOKなんですが、Filter で Int を使うと isEmpty となってしまいます。

これは Validate_NotEmpty の中で empty 関数を利用してチェックしているからです。。。

普通のValidateクラスなら問題ないんですが、この NotEmpty はやっかいな事に IsRequred で必須を指定した時に強制的に追加される Validate です。

removeValidate で削除してオリジナル Validate を追加しようにも自動で追加される Validate は isValid のタイミングで追加されるので対象外になってしまうようです。。。

対応策は見つからず。。。

前回のMulti系エレメントの問題で Int にキャストする事で回避と書きましたが、合わせるとどうしようもない問題に変わります。。。

Multi系の時に array_keys を利用しているのですが、こいつは Int ぽいのしか無ければ必ずIntにしてしまうからです。。。

DBには0以外で管理するしか無いですね。。。
boolの変わりにIntを使う時でも1と2でやった方が良いです。

オリジナルFilterを作成して対処する方法がありました。
http://developer.unlax.com/2009/10/zendframework-element0.html

0 件のコメント:

コメントを投稿

Followers