La classe de validation Laravel par défaut permet des emails étranges. Voici les règles de validation que je définis:Problème de validation de l'email de Laravel
return Validation::make($data, [
'email' => 'required|string|email|max:100|unique:customers,email'
]);
Lorsque j'ai essayé d'utiliser un e-mail étrange comme: aaaa?#%&'@şğüçi̇ö.com
il passe la validation. Cependant, les caractères non latins de l'e-mail sont convertis avant l'insertion de la base de données. L'adresse électronique de la base de données ne correspond donc pas à celle d'origine. Pour éviter cela, je souhaite interdire l'utilisation de caractères non-latins après le symbole @. J'ai essayé la règle personnalisée qui est:
public function passes($attribute, $value)
{
return filter_var($value, FILTER_VALIDATE_EMAIL)
&& preg_match('/@.+\./', $value);
}
mais cela ne fonctionne pas. Ce serait bien d'avoir de l'aide à ce sujet.
Éditer 1 Nous vous remercions de vos réponses! Mais apparemment, la raison pour laquelle le validateur personnalisé n'agit pas est que Laravel assainit toutes les données d'entrée avant toute manipulation. C'est pourquoi après avoir converti les caractères non latins, preg_replace() renvoie 1 tout le temps car il n'y a pas de caractères non latins sur l'entrée. Tout d'abord, j'ai besoin de trouver une solution à cela et d'empêcher Laravel d'assainir l'entrée.
Qu'en est-il juste 'return filter_var ($ value, FILTER_VALIDATE_EMAIL);' dans la méthode passes? – Maraboc