2017-06-21 4 views
0

I Laravel BladeのAjaxを使用してControllerにデータを送信します。送信ボタンを押したときに、このフォームのJquery検証を追加しました。それぞれのルートと表示エラーをクリックします。このタイプのフィールドを検証する方法。空のPost-Ajax、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 
    ); 
} 

以下のように変更することができます。 ($ _POSTの代わりに$ requestを使用することをお勧めします)

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")。エラー).css({'color': 'green'、 'text-align': 'center'})delay(5000).fadeOut(); } @Kenath – Karthik

+0

エラー$( "。result")の代わりにユーザーエラー.html(data.errors) – Kenath

関連する問題