私が使用しているLaravelのバージョンは5.5、ついこの前にリリースされたと思いきや、なんと8/30/2017のことらしくもう1年半以上も経過。LTSということで2年間の長期サポートだからのんびりとしていたら、もうこの夏でサポートの期限切れです。キャッチアップ、ということで去年の2月にリリースされた5.6バージョン(しかし、もうサポートされていない)に追加されたバリデーションをチェックします。
これが、5.6のバリデーションの一覧です。ブルーでハイライトしているのが5.5にはなく5.6に追加されたバリデーションです。
追加されたもので、すぐに使えそうなものは、
Greater Than gt
Greater Than Or Equal gte
Less Than lt
Less Than Or Equal lte
早速使ってみましょう。validator()
はLaravelのヘルパーですが、こちらも読んでください。
Psy Shell v0.9.9 (PHP 7.1.14 — cli) by Justin Hileman >>> $input = ['quantity' => 5]; => [ "quantity" => 5, ] >>> validator($input, ['quantity' => 'required|integer|gt:4'])->errors()->all(); => [] >>> validator($input, ['quantity' => 'required|integer|gt:5'])->errors()->all(); => [ "The quantity must be greater than 0.", ] >>> validator($input, ['quantity' => 'required|integer|gte:5'])->errors()->all(); => [] >>> validator($input, ['quantity' => 'required|integer|lt:6'])->errors()->all(); => [] >>> validator($input, ['quantity' => 'required|integer|lte:5'])->errors()->all(); => []
ちなみに、これらがない5.5では、以下のようにmin
, max
, not_in
を組み合わせて同じようなバリデーションが可能です。
>>> validator($input, ['quantity' => 'required|integer|min:5'])->errors()->all(); => [] >>> validator($input, ['quantity' => 'required|integer|min:5|not_in:5'])->errors()->all(); => [ "The selected quantity is invalid.", ]
しかし、このメッセージでわかりにくいので、
>>> validator($input, ['quantity' => 'required|integer|min:5|not_in:5'], ['not_in' => 'The quantity must be greater than :input.'])->errors()->all(); => [ "The quantity must be greater than 5.", ]
と、カスタムメッセージを与える必要あります。面倒ですね。
メルマガ購読の申し込みはこちらから。