web-dev-qa-db-fra.com

Règle de validation des emails dans Laravel?

Je fais la validation des e-mails en utilisant la règle simple:

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

Comment puis-je modifier l'option unique pour qu'elle ne fonctionne que si l'e-mail entré est différent de l'original?

n échantillon:

Le champ email contient la valeur par défaut de la table users: [email protected]

Ensuite, j'appuie sur le bouton sans apporter de modifications dans le formulaire, je ne devrais pas vérifier unique:users.

Sinon, si j'ai même changé un symbole dans [email protected] Je dois valider la valeur entrante en utilisant: unique:users.

7
MisterPi

Je l'ai fait en utilisant les vérifications conditionnelles:

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

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

Vous pouvez trouver un exemple ici https://laracasts.com/discuss/channels/requests/laravel-5-validation-request-how-to-handle-validation-on-update

Vous devrez avoir plusieurs règles en fonction de la méthode de demande (mise à jour ou création) et vous pouvez passer un troisième paramètre à unique pour vous assurer qu'aucun échec si vous connaissez l'utilisateur/e-mail.

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

Changer de méthode

switch($this->method())
{
    ...
}
7
Frank Provost