2014-10-26 144 views
1

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

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

$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 

谢谢。

+0

您必须将HTTP状态设置为其中一个错误代码。像400.然后使用ajax'error'回调。 – lukasgeiter 2014-10-26 22:11:09

回答

1

随着JS data.empty-fielddata.empty substract field,你应该在Laravel模板中使用data['empty-field']

正如,你可以指望的错误:没有errors.length检查每一个。

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