ゼロより大きくする必要がある(0.01が有効)価格フィールドを検証する必要があるため、次の検証が必要です。
$request->validate([
'product_price' => 'required|numeric|gt:0',
]);
問題は、「product_price」フィールドに文字列を入力するとエラーが発生することです。
InvalidArgumentException比較対象の値は同じ型である必要があります
何故ですか?つまり、0より大きいことを確認する前に、数値であることを確認しています
gt
、gte
、lt
、およびlte
がLaravel 5.6以降のバージョンに追加されました。エラーが発生する理由である必要があります(しかし、それは私のために働いています)。
私はあなたがこのように試すことができると思います
$request->validate([
'product_price' => 'required|numeric|min:0|not_in:0',
]);
min:0
最小値が0であり、負の値が許可されていないことを確認してください。 not_in:0
値が0であってはならないことを確認してください。したがって、これらのルールの両方を組み合わせることにより、仕事ができます。
特定のルールに対して意味のあるエラーメッセージを定義できます。 (正規表現を使用しても同じ結果を得ることができます。)
あなたはこの方法を試すことができます、
Validator :: make()関数を呼び出す前に、次のように比較する値を追加してルールのセットを変更します。
use Illuminate\Support\Facades\Validator;
Validator::extend('greater_than', function ($attribute, $value, $otherValue) {
return intval($value) > intval($otherValue[0]);
});
$validation = Validator::make($input, ['amount' => 'required|numeric|greater_than:0']);
私にとって、このコードは私のプロジェクトで機能しています。
$validation_rules = array(
'user_id' => 'required|integer|gt:0',
'type_id' => 'required|integer|gt:0',
);
$validation = Validator::make($request->all(), $validation_rules);
ここで、gt:0は整数がゼロより大きいかどうかを確認します。
これがあなたのために働くことを願っています。そうでない場合は、Laravel=バージョンを確認してください。