J'utilise la validation de Laravel via FormRequest. Un extrait du code est ici. Il semble que la validation de laravel laisse passer les adresses e-mail telles que "user @ hotmail".
namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class DirectorForm extends FormRequest { public function rules() { return [ 'email' => 'required|email', ]; } }
il semble que la validation ci-dessus autorise "username @ hotmail", qui n'est pas une adresse e-mail valide.
Est-ce que je l'ai mal configuré
4 Réponses :
Il semble que la validation fonctionne comme prévu. Merci d'avoir lu!
En fait, user @ hotmail
est une adresse e-mail valide, car user @ localhost
peut également être une adresse e-mail valide.
Si vous souhaitez vérifier que si l'adresse e-mail contient également un TLD , vous pouvez essayer :
namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class DirectorForm extends FormRequest { public function rules() { return [ 'email' => 'required|regex:.+@.+\..+', ]; } }
Pour plus de règles de validation des e-mails regex, consultez cette réponse .
Utilisez l'expression régulière de: https://emailregex.com/
Et combiner avec la règle de regex Laravel: https://laravel.com/docs/ 5.8 / validation # rule-regex
Vous pouvez écrire une validation personnalisée pour un e-mail dans AppServiceProvider
comme la méthode
Boot
public function rules() { return [ 'email' => 'required|email_address', ]; }
Règles
Validator::extend('email_address', function ($attribute, $value, $parameters, $validator) { return (!preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $value)) ? FALSE : TRUE; });
c'est un format d'adresse e-mail valide. une regex ne peut pas faire grand-chose