0
我很困惑,自定義驗證規則是否需要返回true或false來觸發。Laravel 4自定義驗證規則
我正在驗證一個電子郵件地址,以確保它已通過關係屬於另一個模型。
Validator::extend('email_exists', function($attribute, $value, $parameter){
$user = User::where('email', '=', $value)->with('clients')->first();
//Does the user exits, and are they already a member of this client?
//We know this by looking at the client id, and comparing them the current ID.
if($user != NULL) {
if(in_array(Input::get('client_id'), $user->clients->lists('id'))) {
return false;
} else {
return true;
}
} else {
return true;
}
});
什麼我想上面,發現如果用戶使用輸入的電子郵件是否存在,如果它確實存在,然後檢查電子郵件與任何客戶,而如果這些客戶端的ID匹配客戶端ID在POST中,如果電子郵件存在並且與POST中的客戶端ID相關我想返回一個錯誤,其他明智的我很高興POST處理。
目前,我認爲我允許任何事情通過。我是否正確使用自定義規則,如果我想拋出錯誤,應該返回什麼?
它看起來是正確的,你把這個代碼放在服務提供者中嗎?如果是這樣的話,你是否記得在'config/app.php'中將服務提供者添加到提供者數組? – user3158900
目前在我的控制器中是直的。 – Udders
只要確保它在表單提交的控制器部分中,而不是負責構建表單的部分?在設置'$ user' var之前,也可以嘗試添加'dd('test');'以查看它是否進入該部分。 – user3158900