And*_*ter 2 validation laravel laravel-validation laravel-5.7
我的控制器中有自定义验证规则:
$this->validate($request, [
'currency' => [
'required',
'numeric',
'min:0',
'max:7'
],
'price' => [
'nullable',
"required_if:currency, !=, 0",
'numeric',
'min:1',
'max:1000000'
],
], $messages);
Run Code Online (Sandbox Code Playgroud)
为什么required_if:currency, ==, 0在这种required_if:currency, !=, 0情况下工作而不工作?
在我的情况下,price仅当currency字段值不等于时才需要字段0
我也累了:
required_unless,currency,0
required_unless:currency,0
Run Code Online (Sandbox Code Playgroud)
我建议你使用
required_unless:currency,0根据 [1]:https : //laravel.com/docs/5.5/validation#rule-required-unless
required_if:currency, ==, 0之所以有效,是因为该currency值必须等于值名称后面的任何值(在本例中为currency)。换句话说,如果货币是或 ,price则在这种情况下需要。==0
因此,==在这种情况下,并不意味着通常的“等于”。它只是作为一个字符串值。这也是为什么required_if:currency, !=, 0它不能按您的预期工作的原因。
price要仅当currency字段值不等于 0时才使该字段为必填字段,您可以使用required_unless:currency,0.
换句话说,除非等于 0 price,否则始终需要。currency
| 归档时间: |
|
| 查看次数: |
7914 次 |
| 最近记录: |