【问题标题】:Laravel Validation with checkbox带有复选框的 Laravel 验证
【发布时间】:2017-06-10 23:36:20
【问题描述】:

如果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',
    ];
}

【问题讨论】:

  • 它给了你什么错误信息?它有告诉你失败的原因吗?
  • use_shipping未被勾选时,我收到的错误消息告诉我输入shipping_note

标签: php laravel laravel-5 laravel-5.3


【解决方案1】:

required_with 验证状态:

只有在存在任何其他指定字段时,验证中的字段才必须存在且不能为空。

由于您的隐藏输入,shipping_note 字段将始终存在。由于即使未选中复选框也存在该字段,因此将始终触发 required_with 验证。

您正在寻找的很可能是required_if 验证,其中指出:

required_if:anotherfield,value,...

如果 anotherfield 字段等于任何 ,则验证中的字段必须存在且不为空。

public function rules()
{
    return [
        'use_shipping'  => 'boolean',
        'shipping_note' => 'required_if:use_shipping,1',
    ];
}

这将导致 shipping_note 仅在 use_shipping 的值为 1 时才需要,这应该仅在选中复选框时发生。

【讨论】:

  • 感谢您的回答。不幸的是'required_if:use_shipping,1', 不起作用。仍然和以前一样。
  • @I'll-Be-Back 你确定吗?我刚刚测试了Validator::make(['use_shipping' =&gt; '0', 'shipping_note' =&gt; ''], ['use_shipping' =&gt; 'boolean', 'shipping_note' =&gt; 'required_if:use_shipping,1'])-&gt;passes(),它返回true(验证通过)。
  • 抱歉,我在错误的页面上进行了测试 - 它确实有效,谢谢 :)
猜你喜欢
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 2017-03-19
  • 2016-07-27
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
相关资源
最近更新 更多