如果取消选中use_shipping
并且用户未在shipping_note
中输入值,则验证应该已通过,但已失败?
<input type="hidden" name="use_shipping" value="0">
<input type="checkbox" name="use_shipping" value="1" {{ old('use_shipping', $delivery->use_shipping) ? 'checked="checked"' : '' }}>
文本
<input type="text" name="shipping_note" value="">
在Laravel请求类中:
public function rules()
{
return [
'use_shipping' => 'boolean',
'shipping_note' => 'required_with:use_shipping',
];
}
答案 0 :(得分:4)
required_with
验证状态:
验证字段必须存在且仅在存在任何其他指定字段时才为空。
由于您的隐藏输入,shipping_note
字段将始终存在。由于即使未选中复选框,该字段也会出现,因此始终会触发required_with
验证。
您最常寻找的是required_if
验证,其中指出:
<强> required_if:anotherfield,值,... 强>
如果 anotherfield 字段等于任何值,则验证字段必须存在且不为空。
public function rules()
{
return [
'use_shipping' => 'boolean',
'shipping_note' => 'required_if:use_shipping,1',
];
}
只有当shipping_note
的值为use_shipping
时才会要求1
,只有在选中此复选框时才会出现此情况。