我正在开发手动日记系统,所以每行应该只有一个值,信用卡或借记卡,如果存在信用,则借方应为空,反之亦然,如果信用卡和借记卡一起存在,则应该失败。
所以我像这样使用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
但我得到的甚至是借记和信用在同一行中,它会返回成功。
我做错了什么?提前谢谢。
答案 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
或任何其他有效值,就可以成功。