1.引入對應的類
use Illuminate\Support\Facades\Validator;
2.自定義規則,寫在模型,控制器,中間件都可以
$rules = [
'password' => 'required|between;6,20|confirmed',
'name' => 'required|between;3,8',
];
3.自定義提示,laravel自帶的提示是英文的這里修改為中文
$message = [
'password.required' => '密碼不能為空',
'password.between' => '密碼6到20位',
'password.confirmed' => '密碼與確認密碼不一致'
];
4.驗證
//$input 為獲取到的需要驗證的數組
$validator = Validator::make($input,$rules,$message);
if($validator->passes){
return true;
} else {
return false;
}
5.特殊驗證
驗證兩個字段不一致 可使用 confirmed,在需要驗證的值后面加 confirmation 例:
<input type="password" placeholder="密碼" id="password" name="password"> <input type="password" placeholder="確認新密碼" id="password2" name="password_confirmation">
也可直接在數組中修改健名。
6.錯誤信息
if($validator->fails()){//驗證字段失敗,失敗信息自己封裝處理
$validator->errors()->first(); //返回第一個錯誤消息,一般用這個就行了
//$validator->errors()->all(); //返回全部錯誤消息,不帶表單下標
//$validator->errors(); //返回全部錯誤消息,帶表單下標
}
return back()->withErrors($vilidator);
others:
//驗證規則
protected $role = [
'passwordOld' => 'required|min:6|max:12',
'passwordNew' => 'required|min:6|max:12|confirmed',
'passwordNew_confirmation' => 'required|min:6|max:12',
]; //這三個字段為提交表單的input
//提示信息 attribute是占位符,這里是custom方法的value
protected $msgs = [
'required' => ':attribute不能為空',
'min' => ':attribute最少:min字符',
'max' => ':attribute最長:max字符'
'confirmed' => ':attribute輸入不一致'
];
// 自定義字段名稱,提示的時候用到
protected $custom = [
'passwordOld' => '原密碼',
'passwordNew' => '新密碼',
'passwordNew_confirmation' => '密碼確認',
];
//設置密碼 $input提交過來的表單和數據
public function setPassword($input)
{
$validator = \Validator::make($input,$this->role,$this->msgs,$this->custom);
if($validator->fails()){//驗證字段失敗,失敗信息自己封裝處理
$validator->errors()->first(); //返回第一個錯誤消息,一般用這個就行了
//$validator->errors()->all(); //返回全部錯誤消息,不帶表單下標
//$validator->errors(); //返回全部錯誤消息,帶表單下標
}
}
轉載自 http://blog.daozys.com/goods_100.html
