Laravel 验证 required with

标签 laravel laravel-5.3

我试图在我的 Controller 中为我的请求设置验证,我试图弄清楚如何让地址、城市、州、 zip 相互依赖,如果有一个值,那么必须是所有这些的值,address2 是唯一一个独立但仅依赖于地址的值。出于某种原因,这不起作用。例如,如果提交了城市,则验证通过。所以我不太明白我做错了什么。

'address' => 'required_with_all:city,state,zip|string|nullable',
'address2' => 'required_with:address|string|nullable',
'city' => 'required_with_all:address,state,zip|string|nullable',
'state' => 'required_with_all:address,city,zip|string|size:2|nullable',
'zip' => 'required_with_all:address,city,state|integer|digits:5|nullable'

最佳答案

required_withrequired_with_all不要按照你解释它们的方式工作。 required_with_all如果 ,则表示此字段是必需的以下所有字段有值(value)观。例如,required_with_all:address,state,zip意思是“如果地址和州和 zip 都有值,则需要城市”。

您正在努力实现:

  • address有一个值,city , statezip需要
  • address2有一个值,address需要
  • city有一个值,address , statezip需要
  • state有一个值,address , cityzip需要
  • zip有一个值,address , citystate需要

  • 您正在寻找的规则是 required_with但逻辑是不同的。您可以有效地使用 required_with通过 anchor 定在一个字段上来进行规则,例如: anchor 定于 address并且您的英语规则可以是“如果 address 具有值,则需要城市、州和 zip ,或者如果 citystatezip 具有值,则需要 address”,这可以构造为:
    $this->validate($request, [
        'address' => 'required_with:city,state,zip|string|nullable',
        'city' => 'required_with:address|string|nullable',
        'state' => 'required_with:address|string|size:2|nullable',
        'zip' => 'required_with:address|integer|digits:5|nullable'
    ]);
    

    而对于 address2您的规则是“如果 address 具有值,则需要 address2”(这将导致 statecityzip 也需要)。这再次使用 required_with 构建, 我们设置 required_withaddress :
    $this->validate($request, [
        'address' => 'required_with:city,state,zip,address2|string|nullable',
        'address2' => 'string|nullable',
        'city' => 'required_with:address|string|nullable',
        'state' => 'required_with:address|string|size:2|nullable',
        'zip' => 'required_with:address|integer|digits:5|nullable'
    ]);
    

    编辑:此答案的先前版本中存在错误,现已修复。

    关于Laravel 验证 required with,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48482478/

    相关文章:

    php - 如何通过在laravel中传递参数来获取内容类型application/x-www-form-urlencoded的响应

    laravel - 验证laravel 4 错误中的数组表单字段

    jquery - 在 Bootstrap 多重选择中首先显示选定的选项

    php - 如何更改 Laravel 4 中的错误报告级别?

    laravel - 设置 Laravel 5.4 以使用 React

    php - Payfast 沙箱 notify_url 到本地主机

    session - Laravel 5.3 session cookie 未在浏览器中创建

    authentication - 如何在 vue 组件上使用 auth? (Vue.JS 2)

    laravel - Auth::guard ('user' )->user() 在 Laravel 5.3 中为空

    php - 如何在 Laravel 5 中编写此查询