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
.
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;
});
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())
{
...
}