2017-08-31 26 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

是的,我知道。但是我如何在laravel验证中做到这一点。如果laravel验证,则需要在这里添加:''amount'=>'required | integer | min: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$/', 
]); 

表达式中的最后三个零为数千。第一个数字应该不是零,它们之间的任何数字都是您的案例的完美验证。

希望你明白。

+0

存在错误:'preg_match():无结尾分隔符'^'找到# –

+0

@SuccessMan您可能需要使用\ – Wreigh

+0

@SuccessMan将其转义出来\我忘了在那里添加'/'。我已更新。 –