gpt4 book ai didi

Laravel 验证 required with

转载 作者:行者123 更新时间:2023-12-03 22:53:39 25 4
gpt4 key购买 nike

我试图在我的 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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com