2017-01-30 150 views
2

我想在某人注册时只接受来自一台服务器的邮件ID'@ myemail.com'。如果有任何其他邮件地址,它会说你的邮件ID是无效的。我该怎么办??Laravel:自定义电子邮件验证

protected function validator(array $data) 
    { 
    return Validator::make($data, [ 
     'name' => 'required|max:255', 
     'email' => 'required|email|max:255|unique:users', 
     'password' => 'required|min:6|confirmed', 
     /*'usertype' => 'required',*/ 
    ]); 
    } 

这是我的注册控制器的验证

回答

2

您可以使用此正则表达式模式。附加给你的电子邮件验证:

protected function validator(array $data) 
{ 
    return Validator::make($data, [ 
     'name' => 'required|max:255', 
     'email' => 'required|email|max:255|regex:/(.*)@myemail\.com/i|unique:users', 
     'password' => 'required|min:6|confirmed', 
     /*'usertype' => 'required',*/ 
    ]); 
} 

编辑
随着多个域,你必须使用你的验证阵列,因为这两个邮件域之间的管道:

'email' => ['required', 'max:255', 'email', 'regex:/(.*)@(mrbglobalbd|millwardbrown)\.com/i', 'unique:users'], 

注意:使用正则表达式模式时,可能需要在数组中指定规则,而不是使用管道分隔符,尤其是在正则表达式包含管道字符的情况下。

+1

日Thnx ...它的工作 – incorporeal

+0

如果我想验证2邮件服务器类型ID的'myemail'和'myemail2'什么?我应该在哪里添加? – incorporeal

+0

您可以更新模式,并将多个域包含在brakets中。我已经更新了我的答案。 – Sebastian

1

请在您的电子邮件验证行中进行以下更改。您可以展开电子邮件验证像您的验证规则:

protected function validator(array $data){ 
    $messages = array('email.regex' => 'Your email id is not valid.'); 

    return Validator::make($data, [ 
    'name' => 'required|max:255', 
    'email' => 'required|email|max:255|unique:users|regex:/(.*)\.myemail\.com$/i', 
    'password' => 'required|min:6|confirmed', 
    /*'usertype' => 'required',*/ 
], $messages);}