使用输入字段进行Laravel ajax表单验证

时间:2016-03-27 22:00:30

标签: laravel

在Laravel 5.1项目中

我将此Ajax响应视为错误

{
      "success":false,
      "errors":{
      "drugs_power":["The drugs power field is required."]
      }
}

我需要像这张图片一样的错误验证 enter image description here 我可以通过laravel验证器通过此代码(从控制器返回),

$this->validate($request, [
            'drugs_name' => 'required|unique:drugs',
            'drugs_group_name' => 'required',
            'drugs_power' => 'required'
        ]);

通过此代码在blade.php中显示

<div class="form-group{{ $errors->has('drugs_power') ? ' has-error' : '' }}">
   <label for="userName">Power</label>
       <div>
          <input type="text" class="form-control" name="drugs_power"
                                               value="{{old('drugs_power')}}">
        @if ($errors->has('drugs_power'))
          <span class="help-block">
         <strong>{{ $errors->first('drugs_power') }}</strong>
              </span>
           @endif
     </div>


</div>

我怎样才能像那样进行ajax + laravel验证?

3 个答案:

答案 0 :(得分:1)

将第3个参数传递给validate可以指定自定义消息,如here所示。你可以使用&#34; dot&#34;用于指定特定字段的错误消息的表示法。

$this->validate($request, [
    'drugs_name' => 'required|unique:drugs',
    'drugs_group_name' => 'required',
    'drugs_power' => 'required'
], [
    'drugs_power.required' => 'Your custom message here.'
]);

答案 1 :(得分:0)

假设您正确使用Laravel请求对象,您将在浏览器中收到响应代码422.

如果你想全局捕获它,你可以扩展默认的ajax行为, 将以下代码放入JS。

$(function () {
    $.ajaxSetup({
        statusCode: {
            422: function (data) {
                    $.each(data.responseJSON, function (k, v) {
                      // do something with the error
                    })
            }
        }
    });
});

答案 2 :(得分:0)

您正在寻找https://github.com/whipsterCZ/laravel-ajax

它完全符合您的要求以及更多

通过ajax发送和验证表单非常简单 - 无需配置

HTML

Variable.NET_BOUNDARIES

控制器

<form action="" class="ajax">...</form>

验证表单(通过自定义FormRequest)并显示错误(在errorBag中或在输入正上方)

相关问题