1.引入对应的类
use IlluminateSupportFacadesValidator;
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(); //返回全部错误消息,带表单下标 } }