Laravel 验证 - 仅当两个条件都为真时才需要

Laravel validation - required only when two conditions are true

我希望purchaser_first_namepurchaser_last_name只有在请求为真,经过身份验证的输入值为假。

到目前为止我尝试过的:

  public function rules()
    {        
        return [
            'gift' => 'required',
             'authenticated'=>required,
             'purchaser_first_name' => 'required_if:gift,true,required_if:authenticated,false',
             'purchaser_last_name' => 'required_if:gift,true,required_if:authenticated,false',

        ];
    }

这种方法原来使用 OR 运算符而不是我想要 AND 运算符。

尝试如下更改您的验证码:

return [
    'gift' => 'required',
    'authenticated'=>'required',
    'purchaser_first_name' => 'required_if:gift,true|required_if:authenticated,false',
    'purchaser_last_name' => 'required_if:gift,true|required_if:authenticated,false',
];

你可以这样试试:

'purchaser_first_name' => Rule::requiredIf(function () use ($request) {
    return $request->input('gift') && !$request->input('authenticated');
}),

在函数中,您可以设置您的逻辑。我不确定你真正需要什么,但它是一个很好的开始。

此外,请查看 docs 了解更多相关信息。