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

时间:2014-10-26 22:04:52

标签: php ajax json laravel laravel-4

让我的表单通过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

感谢。

1 个答案:

答案 0 :(得分:1)

如果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');
  }
}