修改密码Confirmed如果要验证的字段是password,则输入中必须有匹配的password_confirmation字段。Differentvalidation的字段值必须与参数字段的值不同。publicfunctionrules(){return[//...'password'=>'bail|required|string|between:8,20|confirmed|different:old_password','password_confirmation'=>'bail|required|string|between:8,20'//...];}Validationarray通常我们的tags前端一般是这样写的:然后可以通过多对多的方式来实现后台的association这是添加标签的功能,但是其实我们仔细想想:我们添加标签的时候想要达到什么样的效果呢?我觉得最简单的有以下两条:这个标签的tags[]不能为空。一旦tags[]不为空,里面的每个元素(标签)都应该是唯一的。所以在验证时,我们可以这样做:Validator::make($request->all(),["tags"=>'required|array',"tags.*"=>'required|string|distinct|min:3',]);这里需要说明一下,第一个"tags"=>'required|array',是表示这是一个不能为空的数组,然后第二个"tags.*"=>'required|string|distinct|min:3',也就是说:希望tags数组中的每一个元素都是一个字符串,并且是唯一的(distinct)。每个元素的最小长度为3。Bail在第一次验证失败后停止运行验证规则。只停止该字段的校验,其他字段不受影响。messages()和attributes()messages()和attributes()继承自Illuminate\Foundation\Http\FormRequest,可以重写验证字段的含义和提示信息。publicfunctionmessages(){return['password.confirmed'=>'两次输入的密码不一致!','password.different'=>'新密码不能和旧密码一致!'];}authorize()检查经过身份验证的用户是否有权更新给定资源。如果authorize()方法返回false,则会自动返回带有403状态码的HTTP响应,控制器的方法将不会运行。publicfunctionauthorize(){returntrue;}Unique第一种写法:unique:(连接名)表名,表中对应字段,忽略值,表主键当字段名等于表中字段时,被忽略的值可以省略。一般用在修改判断的时候,去掉自己表的主键作为id,可以省略publicfunctionrules(){return['name'=>'required|string|unique:mysql.sometable,name',//...];}第二种写法:使用Illuminate\Validation\Rule中的unique()静态方法publicfunctionrules(){$id=$this->get('id');返回['id'=>'required|integer','name'=>['required','string',Rule::unique('mysql.sometable')->ignore($id,'id')],//...];}当有其他查询条件时,可以在链中使用where()等方法publicfunctionrules(){$stationId=$this->get('station_id');返回[//...'car_number'=>['required','string',Rule::unique('queue')->where(function($query)use($stationId){$query->where([['station_id',$stationId],['cancel_state',0]//未取消])->whereDate('create_time',today()->toDateString());})//队列中不允许重复],//...];}required有很多规则,根据实际情况使用:required_ifrequired_unlessrequired_withrequired_with_allrequired_withoutrequired_without_all为例publicfunctionrules(){return['tel'=>'required_without_all:mobile,email,address','mobile'=>'required_without_all:tel,email,address'=>'email'required_without_all:tel,mobile','address'=>'required_without_all:tel,mobile',];}publicfunctionmessages(){return['tel.required_without_all'=>'当手机号、Email、地址都为空时,电话号码不能为空','mobile.required_without_all'=>'当phonenumber,Email,address都为空,手机号不能为空','email.required_without_all'=>'当电话号码,手机号都为空时,Email和address不能为空sametime','address.required_without_all'=>'当手机号和手机号为bot时h为空,邮箱和地址不能同时为空'];}