Laravel: не удалось передать правильный параметр для маршрута в кнопках DataTable - PullRequest
0 голосов
/ 16 декабря 2018

Я использовал обычные таблицы и все мои кнопки, где работали нормально.Затем я наткнулся на DataTables и, таким образом, внедрил таблицы данных, чтобы перечислить всех сотрудников в моей модели сотрудников.Поэтому я использую JQuery для предоставления данных в мою таблицу.Ниже приведен код:

   $(document).ready( function () {
        $('.table').DataTable({
            processing: true,
            serverSide: true,
            ajax : '{!! route('employees.search') !!}',
            columns: [
                { data: 'name', name: 'name'},
                { data: 'empid', name: 'empid'},
                { data: 'user_type', name: 'user_type'},
                { data: 'depots', name: 'depots'},
                { data: 'id',   name: 'id',
                  render: function ( data , row ) {
                    return '<div style="margin-left:1%;">
                            <button class="btn btn-round btn-primary btn-sm" 
                             onclick="showMessage('+data+')">Delete</button> 
                             <form id="'+data+'" method="POST" action=" {{ 
                              route("employees.destroy","'+data+'") }} "> 
                              <input type="hidden" name="_method" 
                               value="delete"> {{ csrf_field() }} </form> </div>';
                    }
                },
            ],
        });
    });

Итак, в приведенном выше коде я нарисовал кнопку для выполнения функции удаления.Каким-то образом, когда я передаю параметр в мой маршрут {{route("employees.destroy","'+data+'") }}, он возвращается как data , в то время как я ожидаю, что это будет id строки.Ниже приведен мой код для функции удаления:

public function destroy($id)
    {
        return $id;
        if ( Auth::check() ) {
            $findResult = AppUser::where('id','=',$id)->first();
            $user = User::where('email',$findResult->email)->first();
            if ($findResult->delete())
            { 
                if ($user) {
                    $user->delete();
                }
                return redirect()->route('employees.index','all')->with('success' , 'Employee deleted successfully!');
            }
            return back()->withInput()->with('error' , 'Employee could not be deleted');
        }        
    }

Таким образом, полученный ответ неверен.Может кто-нибудь, пожалуйста, скажите мне альтернативу или решение, чтобы отправить paramater на маршрут?Я ожидаю, что значение будет идентификатором строки, но ответ, который я получаю, это просто '+ data +' .

1 Ответ

0 голосов
/ 17 декабря 2018

Я предлагаю следующее:

  1. Возвратите URL как часть данных, используя метод addColumn().Например:

    // ... skipped ...
    ->addColumn('delete_url', function ($model) {
        return route('backend.model.delete', $model);
    });
    
  2. Дайте кнопке «Удалить» специальный класс, например «btn-delete».

  3. Присоедините обработчик событийкнопку «Удалить» с помощью специального класса «btn-delete».Когда нажата кнопка, создайте Ajax-запрос, используя URL из свойства данных delete_url.

...