首页 > 解决方案 > 使用 Laravel/ajax 停用开关盒时将数据设置为 NULL,并在激活开关盒时插入数据

问题描述

当我激活开关框时,我成功了,列 paye 和付款日期被修改到数据库,但我被困在以下几点:当我停用开关框时,我必须将 paye 列修改为 0 并将 payment_date 列修改为空入数据库。

我有以下代码:

<div class="modal-body">
         <form id="date_payement" method="post" action="projets"   enctype="multipart/form-data">
                        {{ csrf_field() }}
                        <input type="hidden" id="id_hidden" name="id_projet" />
                         
                           <div class="form-group">
                              <label for="casting_date_naissancee">Date de payement</label>
                             <div class="input-group date">
                                 <input type="text" class="form-control" id="date_paiement" name="date_paiement">
                                 <span class="input-group-text input-group-append input-group-addon" id="spanEstPaymentDate">
                                  <i class="simple-icon-calendar"></i>
                                 </span> 
                              </div>
                           </div>

                        <div class="form-group" align="center">
                          <input type="hidden" name="action" id="action" />
                          <input type="hidden" name="hidden_id" id="hidden_id" />
                          <input type="submit" name="action_button" id="action_button" class="btn btn-warning" value="Enregistrer" />
                        </div>
                        <div class=" col-md-6">
                          <span id="form_result"></span>
                        </div>
             </form>
         </div>

以及以下脚本:

 $(document).ready(function(){

  $(document).on('change', '.selectRow1', function(){

                 $('.modal-title').text("Saisir la date de paiement");
                $('#action_button').val("Enregistrer");
                $('#action').val("Enregistrer");
                $('#formModal').modal('show');

                var paye = $(this).prop('checked') == true ? 1 : 0;

                  console.log(paye) ;

                  var id = $(this).attr('id');

                  console.log(id);

                   $('#date_payement').on('submit', function(event){

            event.preventDefault();
   
            if($('#action').val() == 'Enregistrer')
            {
                   var data = new FormData(this);
                  data.append('paye', paye);
                  data.append('id_projet', id);
                   $.ajax({

                                 type: "post",
                                  dataType: "json",
                                  url: 'projets/paiement',
                                  data: data,
                                  processData: false,
                                  contentType: false,
                                  success: function(data) {
                                   var html = '';
                                   if(data.errors)
                                   {
                                    html = '<div class="alert alert-danger">';
                                    for(var count = 0; count < data.errors.length; count++)
                                    {
                                     html += '<p>' + data.errors[count] + '</p>';
                                    }
                                    html += '</div>';
                                   }
                                   if(data.success)
                                   {
                                    
                                    html = '<div class="alert alert-success">' + data.success + '</div>';
                                    $('#date_payement')[0].reset();
                                   }
                                   $('#form_result').html(html);
                                     


                                  }

                              });
                
                          }
                    });
              });
      });

我尝试了以下控制器来做我想做的事:

    public function paiement(Request $request)

{

if($request->paye = 1){


    $request->validate(['paye'=>'required','id_projet'=>'required','date_paiement'=>'required']);
    $projet = Projet::find($request->id_projet);

       $datee = $request['date_paiement'];

       $time = strtotime($datee);

       $date = date('Y-m-d',$time);

    if($projet){

        $projet->paye = $request->paye;
        $projet->date_paiement = $date;
        $projet->save();

       return response()->json(['success'=>'Paiement efféctué avec succès.']);
        
     }
      
       return response()->json(['failed'=>'Paiement non  efféctué.'],422);
       
    }else{

        $request->validate(['paye'=>'required','id_projet'=>'required']);
        $projet = Projet::find($request->id_projet);

        if($projet){

            $projet->paye = $request->paye;
            $projet->date_paiement = NULL;
            $projet->save();
           
        }
   
    }
}

但不起作用。

如何添加此选项:当我将复选框切换为 0 时,将数据库中的列编辑为paye0 并将date_paiement列编辑为 NULL?

如果您有任何想法,请帮助

标签: jqueryajaxlaravel

解决方案


推荐阅读