Laravel验证与复选框

时间:2017-01-25 17:10:26

标签: php laravel laravel-5 laravel-5.3

如果取消选中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',
    ];
}

1 个答案:

答案 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,只有在选中此复选框时才会出现此情况。