gpt4 book ai didi

php - Laravel 独特的电子邮件验证不适用于 mongodb 中的不同字符大小写

转载 作者:行者123 更新时间:2023-12-01 09:14:15 26 4
gpt4 key购买 nike

我有一个带有唯一电子邮件验证的注册表。当我输入不同的字符大小写时,电子邮件不会应用唯一验证。
example@gmail.com, Example@gmail.com, eXample@gmail.com : Laravel 唯一验证失败。
example@gmail.com, example@gmail.com, example@gmail.com : Laravel 唯一验证是成功的。

请检查我下面的代码并纠正我。电子邮件在数据库中以小写形式存储。

DB-Mongodb,

框架 - Laravel 5.5

jenssegers/laravel-mongodb is using to connect laravel and mongodb

RegisterController.php

protected function validator(array $data)
{
return Validator::make($data, [
'firstName' => 'required|string|max:255',
'lastName' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:user,usrEmail',
'password' => 'required|string|min:6|confirmed',
]);
}

用户.php (模型)
public function setusrEmailAttribute($value)
{
$this->attributes['usrEmail'] = strtolower($value);
}

最佳答案

在 laravel 自定义验证规则的帮助下,我解决了这个问题。

我使用 php artisan 命令创建了一个新规则 php artisan make:rule Lowercase并定义了规则。

app/Rules/Lowercase.php

public function passes($attribute, $value)
{
return strtolower($value) === $value;
}

public function message()
{
return 'The :attribute must be lowercase.';
}

我已将规则对象与其他规则附加在一起

RegisterController.php
use App\Rules\Lowercase;
protected function validator(array $data)
{
return Validator::make($data, [
'firstName' => 'required|string|max:255',
'lastName' => 'required|string|max:255',
'email' => [ 'required', 'string', 'email', 'max:255', 'unique:user,usrEmail', new Lowercase ],
'password' => 'required|string|min:6|confirmed',
'dataProtection' => 'required',
'termsService' => 'required',
]);
}

当注册用户输入电子邮件时,系统会提醒用户使用小写字母。

它对我有用,我不确定这是否是一个好方法。

关于php - Laravel 独特的电子邮件验证不适用于 mongodb 中的不同字符大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48705367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com