如何在没有其他字段的情况下验证所需的数组,反之亦然?

时间:2018-01-09 23:15:47

标签: laravel-5

我正在开发手动日记系统,所以每行应该只有一个值,信用卡或借记卡,如果存在信用,则借方应为空,反之亦然,如果信用卡和借记卡一起存在,则应该失败。

所以我像这样使用required_without验证

'entry.*.credit' => 'required_without:entry.*.debit|nullable|numeric|digits_between:4,10',
'entry.*.debit' => 'required_without:entry.*.credit|nullable|numeric|digits_between:4,10',

这是我的表格

<input type="numeric" name="entry[0][debit]" class="form-control" />
<input type="numeric" name="entry[0][credit]" class="form-control" />
<input type="numeric" name="entry[1][debit]" class="form-control" />
<input type="numeric" name="entry[1][credit]" class="form-control" />
.. so on

但我得到的甚至是借记和信用在同一行中,它会返回成功。

我做错了什么?提前谢谢。

1 个答案:

答案 0 :(得分:0)

您的验证排除了两个字段同时为null,但并不限制两个字段同时出现:

!credit && !debit --> credit = 'required', debit = 'required'
!credit &&  debit --> credit = 'nullable', debit = 'required'
 credit && !debit --> credit = 'required', debit = 'nullable
 credit &&  debit --> credit = 'nullable', debit = 'nullable'

因此,当两者同时出现时,您的验证只需将它们都设为null或任何其他有效值,就可以成功。