簡體   English   中英

空帖時如何驗證字段-Ajax,Laravel

[英]How to Validate the Field When Empty Post - Ajax, Laravel

我在Laravel Blade中使用Ajax將數據發布到Controller。 我為此表單添加了Jquery驗證,當“提交”按鈕單擊其轉到相應的“路由和顯示錯誤”時。 如何驗證這種類型的字段。

$(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',]);   

    }

您可以如下創建驗證器函數,並將驗證消息發送到數組。

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',]);   

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM