1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

laravelの数値のバリデーション

Posted at

laravelのバリデーションでは入力値に応じてチェック方法が動的に変わるバリデーションルールがある。
例えば size とか between なんかがそう。
自分が使っているのはlaravel4だけど、laravel5でもそれほど違いはないはず。

laravel4( http://readouble.com/laravel/4/2/0/ja/validation.html )より

between
フィールドが指定された最小値と最大値の間のサイズであることをバリデートします。sizeルールと同様の判定方法で、文字列、数値、ファイルは評価されます。

size
フィールドは指定された値と同じサイズであることをバリデートします。文字列の場合、値は文字長です。数値項目の場合、値は整数値です。ファイルの場合、値はキロバイトのサイズです。

これを見る限り対象のデータが数字(数値)なら値の範囲、文字列なら文字数をチェックしてくれるものだと思っていた。
つまり、
「3」という値に対して「 between:1,2 」とかいうルールを充てるとバリデーションエラーとなるものだと思っていた。
が、エラーにはならない。。。
laravelのバグだと思っていたのだけれども、コードを見ていると評価対象が数値かどうかは同時に充てられているルールを見て決めているらしい。
なので between と同時に numericinteger を同時に設定すると期待通り動作しました。
phpは型に対してすごくゆるゆるなのでこう判定せざるを得ないという事かな。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?