laravel 的 validate 为啥结果老是会变来变去的?
我代码是这样的:
$message = [
'name.required' => '名称必填',
'age.required' => '年龄必填',
'add_time.required'=>'添加时间必填',
];
$this->request->validate([
'name' => 'required',
'age' => 'required',
'add_time' => 'required',
], $message);
然后它一会提示
"code": 14,
"msg": "接口参数传递错误",
"data": "名称必填"
一会又提示
"code": 14,
"msg": "接口参数传递错误",
"data": "添加时间必填"
一会提示
"code": 14,
"msg": "接口参数传递错误",
"data": "年龄必填"
感觉在乱跳,能不能就从上到下依次提示,第一条不符合提示第一条,第二条不符合提示第二条这样的?
我希望规则能一条一条执行,现在感觉就是乱的很,我刷新下就换成别的提示了,刷新下又换了
本来就是按顺序来的
我用的验证器类,并没有出现这种情况
猜测是你提交的数据data的顺序不是固定的,所以返回的信息也是不固定的。要不你做下数据的排序后再验证
如果你希望在某个属性第一次验证失败后停止运行验证规则,你需要附加 bail 规则到该属性:
试着把request的值打出来看看,验证下是不是都是空呢。从贴出来的代码看,不应该不出现提示乱蹦的情况才对。
你可以在异常捕获的时候只捕获第一个异常
也可以在请求异常类中单独设置其他返回异常 在handler 中 捕获你设置的异常 如:
这两种方式都只会返回一个异常信息。而不是表单提交后所有的验证不通过的信息全部返回给前端