2017-01-30 148 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);}