【问题标题】:How to handle JSON returned validator errors in Laravel如何在 Laravel 中处理 JSON 返回的验证器错误
【发布时间】:2014-12-22 02:21:05
【问题描述】:

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

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

$validator = Validator::make($data, $rules, $messages);

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

并且(使用萤火虫)我看到 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

谢谢。

【问题讨论】:

  • 您必须将 HTTP 状态设置为错误代码之一。喜欢 400。然后使用 ajax error 回调。

标签: php ajax json laravel laravel-4


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 2018-04-30
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-18
    相关资源
    最近更新 更多