вставьте множественный флажок datatable - PullRequest
1 голос
/ 08 июня 2019

Я хочу вставить несколько строк, отмеченных в моей таблице данных, когда я щелкаю по кнопке валидера, у всех, у меня есть проблемы в рамках laravel, я хочу вставить проверку строки в таблицу данных, когда нажимаю кнопку подтверждения, это моекод
отображение списка зарплат

<body>
    <div class="container" id="app">
      <div class="list-group">
       <div class="list-group-item">

    <h3>Pointage Mensuel</h3>
    <div class="col-md-6 col-md-offset-3">
        <h3>jour : {{$data['datek']}} chantier : {{$data['chantier_name']}}</h3>
    </div>
    <button class="btn btn-success add-all" data-url="">Valider Pointage de mois</button>
</div>
</div>

  <div class="list-group">
   <div class="list-group-item">
    <table class="table table-bordered">
        <tr>
            <th>Archive</th>
            <th><input type="checkbox" id="check_all"></th>
            <th>S.No.</th>
            <th>matricule</th>
            <th>nom & prenom</th>
            <th>salaire net</th>
            <th>nbre de jour </th>
            <th>prime</th>
        </tr>
        @if($salaries->count())
            @foreach($salaries as $key => $salarie)
                <tr id="tr_{{$salarie->id}}">
                  <td>archive</td>
                  <td><input type="checkbox" class="checkbox" data-id="{{$salarie->id}}"></td>
                  <td>{{ ++$key }}</td>
                  <td>{{ $salarie->matricule }}</td>
                  <td>{{ $salarie->nom }} {{ $salarie->prenom }}</td>
                  <td>{{ $salarie->salairenet }}</td>
                  <td><input type="text" name="nbreJ" class="form-control" value="{{$data['nbr']}}"></td>
                  <td><input type="text" name="prime" class="form-control" value="0"></td>
                </tr>
            @endforeach
        @endif
    </table>
 </div>
</div>
<!-------------------//////////////////////////------------->
</div> 
</body>

код ajax для проверенных всех / снять отметку и

<script type="text/javascript">
    $(document).ready(function () {
        $('#check_all').on('click', function(e) {
         if($(this).is(':checked',true)) {
            $(".checkbox").prop('checked', true);  
         } else {  
            $(".checkbox").prop('checked',false);  }  });
         $('.checkbox').on('click',function(){
            if($('.checkbox:checked').length == $('.checkbox').length){
                $('#check_all').prop('checked',true);
            }else{
                $('#check_all').prop('checked',false); }});
        $('.add-all').on('click', function(e) {
            var idsArr = [];  
            $(".checkbox:checked").each(function() {  
                idsArr.push($(this).attr('data-id'));});  
            if(idsArr.length <=0)  {  
                alert("Please select atleast one record to pointer.");  
            }  else {  
                    var strIds = idsArr.join(","); 
                    $.ajax({
                        url: "{{ route('salarie.multiple-add') }}",
                        type: 'POST',
                        headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
                        data: {
                            'ids' : strIds},
                        success: function (data) {
                            if (data['status']==true) {
                                $(".checkbox:checked").each(function() { 
                                    alert(strIds); });
                                alert(data['message']);
                            } else {
                                alert('Whoops Something went wrong!!');}
                            window.location.reload()},
                        error: function (data) {
                            alert(data.responseText);}});}  }); });
</script>

функция контроллера addMultiple

   public function addMultiple(Request $request){
        $pointage=new Pointage();

        $pointage->datep=$request->datep;
        $pointage->nbrj=$request->nbrj;
        $pointage->prime=$request->prime;
        $pointage->solde=$request->solde;
     return response()->json(['status'=>true]); 
    }

1 Ответ

0 голосов
/ 08 июня 2019

Извинения за поздний ответ ноутбук умер от меня, когда я был занят, но один из способов сделать это - использовать имена массивов, например:

 <td><input type="checkbox" class="checkbox" name="row[$key][salarie]" data-id="{{$salarie->id}}"></td>

По сути, если у вас есть несколько из этих входов в одной группе, он создаст массив входов на вашем бэкэнде, который вы можете просмотреть. проверить этот дд (request ()); в вашем контроллере функция выше всего остального. тогда вы сможете увидеть, что он возвращает в вашей консоли.

foreach(request(inputgroup) as $value){

   Pointage::create([
      'some_column' => $value['actualInputName']
   ]);
}

Обновите вашу функцию до что-то вроде этого:

public function addMultiple(Request $request){
    dd(request());

    $pointage=new Pointage();

    foreach(request('row') as $row){
       // this is the important line $row is your request and ['salari'] is the name of the input   
       $pointage->salarie = $row['salarie'];
       $pointage->save();      
     }

     return response()->json(['status'=>true]); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...