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

Php Laravel验证-仅当两个条件为真时才需要,php,laravel,laravel-validation,Php,Laravel,Laravel Validation,我希望仅当请求中的礼物输入值为true,且经过身份验证的输入值为false时,才需要买家的姓名和姓氏 到目前为止,我所尝试的: public function rules() { return [ 'gift' => 'required', 'authenticated'=>required, 'purchaser_first_name' => 'requir

我希望仅当请求中的礼物输入值为true,且经过身份验证的输入值为false时,才需要买家的姓名和姓氏

到目前为止,我所尝试的:

  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');
}),
在函数中,可以设置逻辑。我不确定你真正需要什么,但这是一个好的开始


另外,请查看更多信息。

您没有应用两个
必填项\u如果有,您只使用一个。。。如果
采用了不同数量的论证,则必须使用一个|来区分是否使用另一个作为必需的参数。这解决了一半问题,因为还有其他情况。例如,当authenticated为true时,不应应用该规则。你建议的方式是,即使在身份验证是错误的情况下,验证器也会启动。我不是建议你做任何事情,我是在纠正你对规则语法的错误用法,很好luck@PetroBianka你检查我的解决方案了吗?或者我应该删除它?@mare96我只是把它标记为一个可接受的答案。这解决了一半问题,因为还有其他情况。例如,当authenticated为true时,不应应用该规则。您建议的方式是,即使在身份验证为false的情况下,验证器也会启动。我只需要使用request()helper方法而不是$request来使它工作。