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

Email validation rule in Laravel?

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

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

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

样本:

字段 email 包含来自 table users 的默认值:example@gmail.com

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

否则,即使我更改了 example@gmail.com1 中的一个符号,我也必须使用以下方法验证传入值:unique:users.

你可以在这里找到一个例子https://laracasts.com/discuss/channels/requests/laravel-5-validation-request-how-to-handle-validation-on-update

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

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

切换方法

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

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

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

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

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

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