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

Mis*_*rPi 7 laravel-5 laravel-5.2 laravel-5.3

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

'email' => 'required|email|unique:users,email',
Run Code Online (Sandbox Code Playgroud)

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

一个样品:

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

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

否则,如果我甚至更改了一个符号,example@gmail.com1我必须使用以下方式验证传入的值:unique:users.

Fra*_*ost 7

你可以在这里找到一个例子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,
Run Code Online (Sandbox Code Playgroud)

切换方法

switch($this->method())
{
    ...
}
Run Code Online (Sandbox Code Playgroud)


Mis*_*rPi 7

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

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

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