如何处理Laravel中JSON返回的验证器错误


How to handle JSON returned validator errors in Laravel

让我的表单通过AJAX提交,并从验证器返回错误,但不确定如何访问它们。

所以我在我的控制器中返回这样的错误:

$validator = Validator::make($data, $rules, $messages);
if ($validator->fails()) {
  return Response::json(array(
    'errors' => $validator->messages()->all(),
    200)
  );
}

(使用firebug)我看到JSON是:

errors: Array
  0: "This field is required"

等等。我正在寻找一种方法来处理所有可能的错误并将其显示给用户。

通常我会在我的控制器中返回:

'empty-field' => true

然后在我的AJAX调用中:

success: function(data) {
  if(data.empty-field == true) {
    // inform the user of failure
  }
}

但这很快就会变成乏味的检查并通过JSON发送每一个可能的错误。有什么方法可以简单地检查返回的任何错误并处理它们吗?很像Laravel在不使用AJAX时处理错误的方式:

@if($errors->has('field'))
  <p class="input-message input-error full-width">{{ $errors->first('field') }}</p>
@endif

谢谢。

如果JS data.empty-fielddata.empty substract field,则应该使用data['empty-field']

与Laravel模板一样,您可以计算错误:errors.length,而无需检查每个错误。

success: function(data) {
  if(data.errors.length) {
    alert('There are ' + data.errors.length + ' errors');
  }
}