2015-05-20 77 views
1

我正在使用默認的Laravel 5身份驗證系統。我想簡單地添加一個支票來驗證用戶是否正在使用學校的電子郵件帳戶(我正在爲我的大學寫這篇文章)。因此,例如我想確保他們使用@ harvard.edu,而不是@ gmail.com。如果他們沒有使用正確的電子郵件類型,我想向$errors變量添加一個錯誤,並將其與註冊表單上的其他可能的錯誤一起打印出來。如何修改Laravel 5默認身份驗證系統

看來,實際驗證發生在Registrar.php。我假設我將不得不添加一些東西到驗證器功能的電子郵件部分。

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

我很困惑的另一部分是實際錯誤消息的位置。

我是Laravel的新手,在此先感謝。

+0

您正在使用Laravel 4或5? –

+0

@HieuLe Laravel 5 –

回答

3

要添加自定義驗證,您可以閱讀文檔http://laravel.com/docs/5.0/validation#custom-validation-rules。例如,在您的情況:

Validator::extend('email_harvard', function($attribute, $value, $parameters) 
{ 
    $segments = explode("@", $value, 2); 
    return end($segments) == "harvard.com"; 
}); 

之後,修改validator規則,更改行:

'email' => 'required|email|max:255|unique:users', 

是:

'email' => 'required|email|email_harvard|max:255|unique:users', 

有關錯誤信息,您可以在這裏閱讀。在Laravel 5中,驗證消息位於resources/lang/xx/validation.php,其中xx是語言代碼。

+0

我會在驗證器函數中添加Validator :: extend嗎? @HieuLe –

+0

您應該將此代碼放入Laravel 5中的服務提供程序中,請參閱[本文](https://laracasts.com/discuss/channels/general-discussion/validator-custom-rule-laravel-5#reply- 7355)。 –