以前にElementにRadioやSelectなんかの選択系を用いた時にInArrayでチェックしてるから入力された値をキャストしなくてはならないと書いたんですが、その時の0値の対処方法を今さら思いつきましたw
なんでこんな簡単な事を。。。って感じですがw
デフォルトではIntにキャストするFilterがInt1つしか無いのですが、このIntは単純にキャストするだけなので、キャストする前のStringが本当にIntらしい値なのかをチェックしてそうでなければキャストしないオリジナルFilterを作れば良いだけでした。。。
今回作ったのはこれです。。
class Plugin_Filter_StrIntToInt implements Zend_Filter_Interface
{
public function filter($value)
{
if ($value === '') return $value;
$cast = (string)((int)$value);
if ($cast === $value) {
return (int)$value;
} else {
return $value;
}
}
}
0 件のコメント:
コメントを投稿