Laravel中的电子邮件验证规则?

时间:2016-11-02 12:15:31

标签: laravel-5 laravel-5.2 laravel-5.3

我使用简单的规则进行电子邮件验证:

'email' => 'required|email|unique:users,email',

如何修改选项unique,使其仅在输入的电子邮件与原始电子邮件不同时才有效?

示例:

字段email包含表users中的默认值:example@gmail.com

然后我按下按钮而不对表格进行任何更改,我不应该检查unique:users

否则,如果我在example@gmail.com1中更改了一个符号,则必须使用以下内容验证传入值:unique:users

3 个答案:

答案 0 :(得分:5)

您可以在https://laracasts.com/discuss/channels/requests/laravel-5-validation-request-how-to-handle-validation-on-update

找到示例

根据请求方法(更新或创建),您需要有多个规则,并且您可以将第三个参数传递给唯一,以确保在您知道用户/电子邮件时不会失败

'user.email' => 'required|email|unique:users,email,'.$user->id,

切换方法

switch($this->method())
{
    ...
}

答案 1 :(得分:1)

我使用条件检查做到了这一点:

 $validator = Validator::make($request->all(), []);

 $validator->sometimes('email', 'unique:users,email', function ($input) {
            return $input->email !== Auth::user()->email;
        });

答案 2 :(得分:0)

我认为这是Laravel验证中的漏洞。
我更新了用于电子邮件验证的代码。这对我来说很好。

'email' => [
   'required', 'email:rfc',
   function($attribute, $value, $fail) {
   if (!filter_var($value, FILTER_VALIDATE_EMAIL)) {
      $fail($attribute . ' is invalid.');
   }
}],