Laravel,如何显示与ajax提交表单错误?

时间:2018-06-24 19:01:03

标签: php jquery ajax laravel datepicker

我使用ajax提交表单而不必在之后重新加载页面,但是我真的不知道如何获取表单错误,尤其是对于必填字段。

这是我的表单,它是带有两个datepicker的简单表单:

<form>
  <div class="form-group row">
    <label for="date_debut" class="col-md-4 col-form-label text-md-right">Date de début</label>

    <div class="col-md-6">
      <input type="text" id="date_debut" name="date_debut" class="datepicker-here form-control" data-timepicker="true" data-language='fr' placeholder="Choisir une date" />
     </div>
   </div>

   <div class="form-group row">
     <label for="date_fin" class="col-md-4 col-form-label text-md-right">Date de fin</label>

     <div class="col-md-6">
        <input type="text" id="date_fin" name="date_fin" class="datepicker-here form-control" data-timepicker="true" data-language='fr' placeholder="Choisir une date" />
     </div>
    </div>

    <div class="form-group row mb-0">
      <div class="col-md-6 offset-md-4">
        <button id="ajoutDispoButton" onclick="myfunction()" type="button" class="btn btn-primary">
                                            Ajouter
        </button>
      </div>
     </div>

     <input type="hidden" id="user_id" name="user_id" class="form-control" value="{{$user->id}}" required>
</form>

这是我的Ajax电话:

 function myfunction(param){
        var date_debut = $('#date_debut').val();
        console.log(date_debut);
        var date_fin = $('#date_fin').val();
        var user_id = $('#user_id').val();

        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });

        $.ajax({
            url: '{{ route('createDispo') }}',
            type: 'POST',
            dataType: "json",
            data: {
                user_id: user_id,
                date_debut: date_debut,
                date_fin: date_fin,
            },

            success: function (data) {
                $("#centralModalSuccess").modal();
                $("#date_fin").val("");
                $("#date_debut").val("");
            },
            error: function (data) {
                var errors = data.responseJSON;
                console.log(errors);
            }
        });
    }

这是我的控制器:

public function createDispo(Request $request){
    $user = User::find($request->user_id);
    $disponibilite = new Disponibilite();
    $disponibilite->date_debut = Carbon::createFromFormat('d/m/Y H:i',$request->date_debut);
    $disponibilite->date_fin =  Carbon::createFromFormat('d/m/Y H:i',$request->date_fin);
    $user->disponibilites()->save($disponibilite);

    return response()->json(['ok' => 'ok']); // Return OK to user's browser
}

我认为这不是正确的方法,而是这项工作。问题是我想处理验证错误,我的字段是必填字段,但是即使它们为空,我也可以发送ajax调用。

有人知道怎么做吗?

2 个答案:

答案 0 :(得分:1)

在控制器功能中添加验证

public function createDispo(Request $request){
   $request->validate([
    'date_debut' => 'required',
    'date_fin' => 'required',
]);
// your code 
}

并以html显示错误。

答案 1 :(得分:0)

您可以使用jquery进行表单验证,而不是使用laravel验证

看看这个问题:A simple jQuery form validation script