Laravel 如何在自定义规则中验证电子邮件
我用拉威尔 我对用户名和电子邮件使用相同的字段。此外,如果输入是用户名或电子邮件,则用户必须进行选择 如果类型是电子邮件,我喜欢添加电子邮件验证。如果是用户名,则不需要电子邮件验证 我尝试使用if函数创建自定义规则。但是我怎样才能验证电子邮件呢Laravel 如何在自定义规则中验证电子邮件,laravel,Laravel,我用拉威尔 我对用户名和电子邮件使用相同的字段。此外,如果输入是用户名或电子邮件,则用户必须进行选择 如果类型是电子邮件,我喜欢添加电子邮件验证。如果是用户名,则不需要电子邮件验证 我尝试使用if函数创建自定义规则。但是我怎样才能验证电子邮件呢 class StoreUserRequest extends FormRequest { public function rules() { return [ 'first_name'
class StoreUserRequest extends FormRequest
{
public function rules()
{
return [
'first_name' => 'required',
'last_name' => 'required',
'password' => 'required',
'email' => ['required', new ValidateEmailRule()]
];
}
public function authorize()
{
return true;
}
}
如果:是电子邮件:1,您不能只使用
“电子邮件”=>“必填”吗
编辑:
如果is_email=1
我想检查email
中的输入是否是有效的电子邮件地址编辑:我的意思是:$this->attributes->get('is_email')
返回空值。我把它改成了if(request()->is_email){$rules['email']='email'}
如果($this->is_email==1)
或者如果($this->boolean(is_email)
?我知道,只是想更新我的答案,用$this
代替request()
在我看来更好,我想确保它能工作:)因此,基本上如果用户选择电子邮件作为选项,然后您想检查用户输入的值是否为有效的电子邮件地址格式或不正确?
class ValidateEmailRule implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
if (request()->is_email) {
//validate email ---here i need help to get the right code---
}
return true;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The validation error message.';
}
}
$rules = [
'first_name' => 'required',
'last_name' => 'required',
'password' => 'required',
];
if ($this->is_email) {
$rules['email'] = 'email';
}
return $rules;