2017-06-21 26 views
0

我郵報Laravel刀片使用Ajax的數據控制器。我加入了jQuery驗證這種形式,當提交按鈕單擊其轉到相應的路線並顯示錯誤。如何驗證字段的類型此。如何驗證字段爲空時後 - 阿賈克斯,Laravel

$(document).ready(function() { 

$("#add").click(function(event) { 

     if(!$('#ledger_name').val()) { 
      $('#ledger_name').parents('p').addClass('warning'); 
     } 

    event.preventDefault(); 

     $.ajax({ 
      type: 'post', 
      url: $("#add").attr('data-url'), 
      data: { 
      '_token': '{{ csrf_token() }}', 
      'form_data': $('#Form').serialize(), 
      }, 
      success: function(data) { 

       $('#ledger_name').val(''); 
       $('#openning_balance').val('0.00'); 
       $('#ob_type').val(''); 
       $('#under').val(''); 
       $('#ledger_address').val(''); 
       $("#newLedger .close").click(); 
       $(".result").html(data.success).css({'color': 'green', 'text-align': 'center'}).delay(5000).fadeOut(); 
      }, 

     error: function(data) 
      { 
       var errors = ''; 
       for(datos in data.responseJSON){ 
        errors += data.responseJSON[datos] + '<br>'; 
       } 
       $('#response').show().html(errors); //this is my div with messages 
      } 

     }); 

    }); 

    }); 

控制器代碼:

public function addnewledgers(Request $request){ 

    $usersid = Auth::user()->id; 
    $companyids = Session()->get('companyids'); 

    $values = array(); 
    parse_str($_POST['form_data'], $values); 

    $insertledgers=Ledger::create(['ledger_name'=>$values['ledger_name'],'openning_balance'=>$values['openning_balance'],'ob_type'=>$values['ob_type'],'under'=>$values['under'],'ledger_address'=>$values['ledger_address'],'company_id'=>$companyids,'user_id'=>$usersid,'created_by'=>$usersid]); 

    return response()->json(['success' => 'Ledger Details Added Successfully',]); 

    } 
+0

您會提醒您確切指出要驗證的字段類型。從你的代碼是不是很明顯,你是什麼類型的字段。 –

+0

我只有文本字段@forexknight – Karthik

+0

使用laravel驗證器驗證您的字段爲下面給出的答案 –

回答

2

你可以像下面創建驗證功能,並得到驗證消息的數組。

protected function validator(array $data) 
{ 
    return Validator::make($data, [ 
     'name' => 'required|string|max:255|unique:users', 
    ]); 
} 

並在您的控制器方法中調用該驗證函數。

$validation = $this->validator($request->all(),true); 
if($validation->fails()){ 
    $errors = $validation->errors(); 
    return response()->json(
     ['errors' => $errors, 'status' => 'error'],200 
    ); 
} 

您可以更改您的方法如下。 (建議使用$ request而不是$ _POST)

public function addnewledgers(Request $request){ 

    $usersid = Auth::user()->id; 
    $companyids = Session()->get('companyids'); 

    Validator::make($request->all(), [ 
      'ledger_name' => 'required', 
      //other validations 
    ]); 

    if($validation->fails()){ 
     $errors = $validation->errors(); 
     return response()->json(
      ['errors' => $errors, 'status' => 'error'],200 
     ); 
    } 


    $values = array(); 
    parse_str($_POST['form_data'], $values); 

    $insertledgers=Ledger::create(['ledger_name'=>$values['ledger_name'],'openning_balance'=>$values['openning_balance'],'ob_type'=>$values['ob_type'],'under'=>$values['under'],'ledger_address'=>$values['ledger_address'],'company_id'=>$companyids,'user_id'=>$usersid,'created_by'=>$usersid]); 

    return response()->json(['success' => 'Ledger Details Added Successfully',]); 

} 
+0

Json返回,但錯誤不會顯示在相應的div錯誤:function(data){$(「。result」)。html(data。 。誤差)的CSS({ '顏色': '綠色', '文本對齊': '中心'})延遲(5000).fadeOut(); } @Kenath – Karthik

+0

用戶錯誤,而不是錯誤$( 「結果」)。HTML(data.errors) – Kenath