2016-12-13 8 views
0

의 새소식입니다. 내 양식에 laravel 기본 제공 유효성 검사를 사용하려고했습니다.laravel 5.3

유효성 검사기 없이는 내 코드가 완벽하게 실행됩니다. 하지만 유효성 검사기 코드를 추가하면 500 개의 내부 서버 오류가 발생합니다. 나는 모든 변수 이름이 바로 내가 생각하고 이런 일이 방법을 모르는

컨트롤러 :

public function addItem(Request $request){ 

    $validator = Validator::make($request->all(),[ 
     'code_Item'=>'required|unique|max:4', 
     'name_Item'=>'required|unique|max:255', 
    ]); 

    if($validator->fails()){ 
     return \Response::json($validator); 
    } 
    else 
    { 
     $item = new kategoriBarang; 
     $item->code_item = $request->code_item; 
     $item->name_item = $request->name_item; 
     $item->save(); 
     return \Response::json($item);   
    } 

} 

경로 :

Route::post('item', '[email protected]'); 

JS $ 아약스 :

$.ajax({ 

    type: type, 
    url: my_url, 
    data: formData, 
    dataType: 'json', 
    success: function(data) { 
     console.log(data); 
     /* 
      success code 
     */ 
    }, 
    error: function(data) { 
     /* 
      ihope this data contain the validation error so i can display     it on the modal 
     */ 
     console.log('Error:', data); 
    } 
}); 

고맙습니다.

보기 :

@extends('layouts.mainlayout') 
@section('content') 
<!-- Content Wrapper. Contains page content --> 
    <div class="content-wrapper"> 
    <!-- Content Header (Page header) --> 
    <section class="content-header"> 
     <h1> 
     item Barang 
     <small>CRUD item barang</small> 
     </h1> 
     <ol class="breadcrumb"> 
     <li><a href="#"><i class="fa fa-dashboard"></i> Master Data</a></li> 
     <li class="active">item barang</li> 
     </ol> 
    </section> 

    <!-- Main content --> 
    <section class="content"> 

     <!-- Your Page Content Here --> 
     <div class="box box-primary"> 
     <div class="box-header with-border"> 
       <h3 class="box-title">item Barang</h3> 
     </div> 
     <div class = "box-body "> 
      <div class=""> 
       <div class="col-sm-8 col-md-8 col-xs-8"> 
        <form action ="#" method="get"> 
         <div class="input-group"> 
          <input type="text" name="q_item-barang" class="form-control" placeholder="Search..."> 
           <span class="input-group-btn"> 
            <button type="submit" name="search" id="search-btn" class="btn btn-flat" > 
             <i class="fa fa-search"></i> 
            </button> 
           </span> 
         </div> 
        </form>     
       </div> 
       <div class="col-md-4 col-sm-4 col-xs-4 pull-right"> 
        <div class="pull-right"> 
         <button id="btn-add" class="btn btn-primary open-modal" value=""> 
         <i class="fa fa-plus"></i> Add</button> 
        </div> 
       </div> 
      </div> 
     <br>  
     <br>  

     <div class="container col-md-12 col-sm-12"> 
       <table class = "table table-bordered table-striped table-fixed"> 
        <tbody id="itemBarang-List"> 
         <tr> 
          <th class="col-md-2">Kode</th> 
          <th class="col-md-8">Nama item</th> 
          <th class="col-md-2 col-xs-2">Operasi</th> 
         </tr> 
         @foreach($KatBarang as $item) 
         <tr id="ID{{$item->id}}"> 
          <td >{{$item->code_item}}</td> 
          <td >{{$item->name_item}}</td> 
          <td > 
           <div class = "btn-group"> 
            <!--editBtn--> 
            <button id="editBtn" class="btn btn-sm btn-warning open-modal" value="{{$item->id}}"> 
               <i class="fa fa-pencil"></i> </button> 
            <!--deleteBtn--> 
            <button id="deleteBtn" class="btn btn-sm btn-danger delete-task" value="{{$item->id}}"> 
               <i class="fa fa-trash"></i> </button> 
           </div> 
          </td> 
         </tr> 
         @endforeach            
        </tbody>     
       </table> 
     </div> 
     </div> 
     <div class = "box-footer">    
     </div> 
     </div> 
    </section> 
    <!-- /.content --> 
    </div> 
<!-- /.content-wrapper --> 
<!--Modal window--> 
<div class="modal fade" id="itemBarang-Modal" tabindex="-1" role="dialog" aria-labeledby="myModalLabel" aria-hidden="true"> 
    <div class="modal-dialog"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden ="true">x</span></button> 
       <h4 class="modal-title" id="myModalLabel">item Editor</h4> 
      </div> 
      <div class="modal-body"> 
       <form id="frmitemBarang" name="frmitemBarang" class="form-horizontal container-fluid" novalidate=""> 
        <div class="form-group error"> 
         <div class="form-group"> 
          <label class="col-sm-3 col-md-3 control-label" style="text-align: right;">Kode item</label> 
          <div class="col-sm-9 col-xs-12"> 
           <input type="text" id="code-item" name="code-item" placeholder="Kode.." class = "form-control" value=""> 
          </div> 
         </div> 
         <div class="form-group"> 
          <label class="col-sm-3 col-md-3 control-label" style="text-align: right;">Nama item</label> 
          <div class="col-sm-9 col-xs-12"> 
           <input type="text" id="name-item" name="name-item" placeholder="item.." class = "form-control" value=""> 
          </div> 
         </div> 
        </div> 
       </form> 
      </div> 
      <div class="modal-footer"> 
      <button type="button" class="btn btn-primary" id="btn-save" value="add">Save changes</button> 
      <input type="hidden" name="Item_id" id="Item_id" value="0"> 
      </div> 
     </div> 
     </div> 
    </div> 
</div> 
@endsection 

@section('script') 
<meta name="_token" content="{{csrf_token()}}" />  
<script src="{{asset('js/crud-js/item-barang.js')}}"></script> 
@endsection 
+0

보기가 어떻게 생겼습니까? – nyedidikeke

+0

singgle add btn이 있습니다. 모든 항목으로 구성된 테이블입니다. –

+0

내 질문에 분명하지 않은 것 같습니다. 너는 시야가있다. 권리? 내용은 무엇입니까? – nyedidikeke

답변

1

당신은 토큰 당신의 CSRF를 의미 없거나 존재하는 경우 Laravel 현재 세션에 대한 값을 생성 일치하지 않는 중 하나 인 토큰 불일치 오류가 발생할 수 있습니다.

{{ csrf_field() }}은 어디서나 <form> 요소의 내용을 withing에 추가 할 수 있습니다,이 문제를 해결하려면.

후 매개 변수로 CSRF 토큰을 활성화하려면, 단순히 내용에서 다음과 같은 <meta> 요소를 추가하여 <head> 요소 : 다음

<meta name="csrf-token" content="{{ csrf_token() }}"> 

, 자동으로 토큰을 추가 할 jQuery를 지시 아래의 스 니펫과 같이 $.ajaxSetup();을 사용하여 모든 요청 헤더에 연결하십시오. 나중에 시나리오를

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

, 당신은 더 이상 세계는 가능하게하기 때문에 위의 같은 X-CSRF-TOKEN 키 값 쌍으로 AJAX 헤더을 재정의 할 필요가 없습니다; 당신은 단순히 $.ajax();, $.get();이 (... here 더 읽고, here) 사용할 수 있습니다.

위의 설명에 대한 샘플 코드; 참고 : 헤더은 이미 전역 적으로 정의되어 있지 않으므로 $.ajaxSetup();으로 정의되지 않았습니다.

$.ajax({ 
    url: "https://www.https://stackoverflow.com/", 
    type: "GET", 
    dataType: "json", 
    data: formData, 
    success: function(data, status) { 
     console.log("Data: " + data + ", Status: " + status); 
    }, 
    error: function(data) { 
     console.log("Error: " + data); 
    } 
}); 
// where formData returns your form data in the appropriate format, here, JSON. 

다른 유용한 자원 및 참조 here.

+0

답변과 설명 주셔서 감사합니다. 정말 고맙습니다. 처음에는 $ .ajaxsetup을 사용하여 내 헤더를 설정했지만 오류 토큰 missmatch였습니다. 그런 다음 헤더를 $ .ajax 함수로 이동하고 토큰 헤더를 추가하면 오류가 사라집니다. –

1

일부 검색 후 오류가 토큰 불일치였습니다. 그런 다음

header: 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') 

$.ajax 안에 넣었습니다. 이제 작동합니다.

그러나 모든 기능 (추가/삭제/업데이트 할 때마다 1)에서 $.ajax 안에 토큰을 추가하는 것이 더 좋은지 또는 $.ajaxsetup에 신고하는 것이 더 나은지 아직 나에게 확실하지 않습니다.