2017-08-31 9 views
1

このようなlaravel上の私の検証:私は量の値は、数千laravelで何千もの検証を行うにはどうすればよいですか?

の倍数である必要

return Validator::make($data, [ 
    ... 
    'amount' => 'required|integer|min:20000', 
]); 

例えば、数千

の入力だけ倍数できるように、値:25000、 50000,151000,200000など

入力の例:25500,50500,151500,200500など

どうすればいいですか?

答えて

4

あなたはその数תカスタム検証ルールを使用して、このロジックを実装する剰余とることができます。このような https://laravel.com/docs/5.4/validation#custom-validation-rules

何かを行う必要があります。

Validator::extend('mod1000', function ($attribute, $value, $parameters, $validator) { 
      return $value % 1000 == 0; 
    }); 
+0

はい私はそれを知っています。しかし、どのように私はそれをラベールの検証に入れますか?ラベリング検証の場合は、ここで追加する必要があります: ''amount' => '必須|整数|分:20000'、'。しかし、私はまだ混乱しています。どのように追加することができますか? –

+1

@SuccessManこの質問を見るhttps://stackoverflow.com/questions/32036882/laravel-validate-a-integer-field-that-needs-to-be-greater-than - 他人があなたを助けるかもしれない –

+0

@SuccessManは、この ''amount' => 'required | integer | min:20000 | mod1000''のような検証を変更します。 –

1

あなたはこのような検証のための正規表現を使用することができますが:

return Validator::make($data, [ 
    ... 
    'amount' => 'required|integer|regex:/^[1-9]+[0-9]*000$/', 
]); 

最後の3つのゼロは、何千もの値です。最初の数字はゼロ以外でなければならず、それらの間の数字はあなたのケースに対する完全な検証です。

ご理解いただきますようお願いいたします。

+0

エラーがあります: 'preg_match():終了デリミタがありません '^' found' –

+0

@SuccessManあなたは\ – Wreigh

+0

でそれをエスケープする必要があります@SuccessManそこに'/'を追加するのを忘れてしまいました。私は更新しました。 –

関連する問題