仅在值存在时应用验证?

时间:2018-08-14 09:35:06

标签: laravel laravel-5.6

我有一些验证规则:

return [
        'name' => 'required',
        'phone' => 'required_without:email',
        'email' => 'required_without:phone|email',
    ];

我要验证的是,如果有电话,则不需要电子邮件,如果有电子邮件,则不需要电话。

我已经通过上面的方法解决了这个问题,但是当您输入电话号码并将电子邮件保留为空白(应该允许)时,我收到验证错误,指出该电子邮件未格式化为电子邮件地址。

如何允许电话或电子邮件,以及如果电子邮件需要进行电子邮件格式化?

1 个答案:

答案 0 :(得分:0)

您可以这样使用。

if($request->input("phone")){
     $data["phone"] = $request->input("phone");
     $validate = '';
}elseif($request->input("email")){
     $data["email"] = $request->input("email");
     $validate = 'email';
}

return 
Validator::make($data, [
                         'name' => 'required',
                         key($data) => array('required',$validate)
                       ],