Laravel原生提供滿多驗證的,其中有一項就是Email的驗證
但這通常只適用於單一E-mail的驗證,例如:test@gmail.com。
今天如果是多組E-mail並且需要使用「;」作為E-mail的區隔,但連續E-mail的驗證就需要自己客制化了。
- 首先,先在「app/route.php」中註冊一個驗證器的位址
- 再到我是在「app」下新增一個自己額外公用的資料夾:「global」,新增完這個資料夾,記得去app/start中新增這個資料夾的位址
回到global中,在此資料夾中新增一個檔案「CustomValidation.php」內容如下:
1234567891011121314151617181920<?phpclass CustomValidation{public function custom_email($field, $value, $params){$p_int_false = 0;$p_ary_email = explode(';', $value);foreach ($p_ary_email as $p_int_key => $p_str_value) {if(!filter_var(trim($p_str_value), FILTER_VALIDATE_EMAIL))$p_int_false++;}if($p_int_false > 0)return false;elsereturn true;}} - 接著自訂錯誤訊息,在「app/lang/語系/」中新增一個檔案「validation.php」,內容如下:
123456789<?phpreturn array('custom' => array("要檢查的欄位名稱" => array("custom_email" => "Email 格式錯誤")));?> - 最後,在驗證的地方使用這個自訂驗證器「custom_email」就可以了
12345$rules = array('要檢查的欄位名稱' => 'required|custom_email',);$v = Validator::make($data, $rules);
參考:Display Error Message for Custom Validation in Laravel 4、Custom validation in Laravel 4