【发布时间】:2021-10-30 13:10:40
【问题描述】:
我有一个这样的验证器,
$validator = Validator::make($request->query(),
[
'size' => 'required|numeric|max:' . (100 * 1024 * 1024)
],
[
'size.required' => 'param size is required',
'size.numeric' => 'param size should be numberic',
'size.max' => 'param size is over size'
]);
现在我想检查$validator 是否有错误size.required
$messages = $validator->errors();
if ($messages->has('size.required')) {
// do something...
} else if ($messages->has('size.numeric')) {
// do something...
}
那么有没有办法实现呢?
感谢您的任何想法。
【问题讨论】:
-
你不能这样做,
has与size一起使用,而不是与size.rule一起使用。我只能认为您可以使用get而不是has(或first,因此如果同一字段有多个错误,则只会收到第一个错误)并尝试阅读该消息并基于此,知道rule没有通过。你为什么要这样做?也许解决方案在其他地方。 -
@matiaslauriti 非常感谢。我正在开发一个 API Laravel APP,所以我想通过
Validator的结果响应不同的错误代码,例如,如果规则size.required没有通过,它将响应 json 像{"error":30001,"message":"xxxxx"}和如果规则size.numeric不通过,它会像{"error":30002,"message":"xxxxx"}一样响应json。有没有更好的方法来做到这一点?再次感谢您。 -
我认为你可以这样做,如果 ($validation->fails()) { $messages = $validation->errors(); if ($messages->has('size')) { if ($messages->first('size') == 'param size is required') { // 做点什么... } else if ($messages- >first('size') == 'param size should be numberic') { // 做点什么... } } return Redirect::back()->withInput()->withErrors($messages); }
标签: php laravel validation