Saya menggunakan Yajra Datatables untuk menanyakan senarai pengguna di bahagian pelayan. Saya menambah semua kebergantungan tetapi butang tidak ditunjukkan. Butang ialah Salin, PDF, CSV dan juga butang tersuai paparan. Saya telah cuba menggunakan versi JQuery yang berbeza tetapi masih tiada. Apabila saya hanya memulakan jadual data dengan tatasusunan data daripada paparan, butang muncul dan berfungsi dengan baik, tetapi apabila saya menambah sumber data dari bahagian laluan dan pelayan, butang tidak muncul. Adakah sesuatu yang hilang? Di bawah ialah kod pemprosesan sisi pelayan saya, butang tidak ditunjukkan. Saya juga tidak mendapat ralat konsol semasa menyahpepijat.
Sumber data
public function index(Request $request) if ($request->ajax()) { $users = User::select( "users.id", "users.first_name", "users.last_name", "users.email", "users.created_at", "roles.name as role_name") ->join("roles", "roles.id", "=", "users.role_id") ->where("users.status", "=", 1) ->get(); return Datatables::of($users) ->addIndexColumn() ->make(true); } return view('users/index'); }
Borang
<table id="example1" class="table table-bordered table-striped"> <thead> <tr> <th>Email</th> <th>First Name</th> <th>Last Name</th> <th>Date Added</th> </tr> </thead> <tbody> </tbody> </table> <script> $(function () { $("#example1").DataTable({ processing: true, serverSide: true, ajax: { url: '{{ route('users.home') }}', }, columns: [ {data: 'email', name: 'email'}, {data: 'first_name', name: 'first_name'}, {data: 'last_name', name: 'last_name'}, { data: "created_at", "render": function (value) { if (value === null) return ""; return moment(value).format('DD/MM/YYYY'); } } ], "responsive": false, "lengthChange": false, "autoWidth": false, "buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"] }).buttons().container().appendTo('#example1_wrapper .col-md-6:eq(0)'); }); </script>
Berikut ialah perpustakaan CSS dan JS saya
CSS
<link rel="stylesheet" href="{{ asset('plugins/datatables-bs4/css/dataTables.bootstrap4.min.css') }}"> <link rel="stylesheet" href="{{ asset('plugins/datatables-responsive/css/responsive.bootstrap4.min.css') }}"> <link rel="stylesheet" href="{{ asset('plugins/datatables-buttons/css/buttons.bootstrap4.min.css') }}">
JS
<script src="{{ asset('plugins/datatables/jquery.dataTables.min.js') }}"></script> <script src="{{ asset('plugins/datatables-buttons/js/dataTables.buttons.min.js') }}"></script> <script src="{{ asset('plugins/jszip/jszip.min.js') }}"></script> <script src="{{ asset('plugins/pdfmake/pdfmake.min.js') }}"></script> <script src="{{ asset('plugins/pdfmake/vfs_fonts.js') }}"></script> <script src="{{ asset('plugins/datatables-buttons/js/buttons.html5.min.js') }}"></script>
Apabila saya melayari jadual menggunakan php atau bilah butang akan menunjukkan:
<?php if(isset($users) && count($users)>0){ ?> <table id="example1" class="table table-bordered table-striped"> <thead> <tr> <th>Email</th> <th>First Name</th> <th>Last Name</th> </tr> </thead> <tbody> <?php foreach($users as $user){ ?> <tr> <td><?php echo $user['email']; ?></td> <td><?php echo $user['first_name']; ?></td> <td><?php echo $user['last_name']; ?></td> </tr> <?php } ?> </tbody> </table> <?php }else { echo "No Users Available"; } ?>
Pengamatan jadual
<script> $("#example1").DataTable({ "responsive": true, "lengthChange": false, "autoWidth": false, "buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"] }).buttons().container().appendTo('#example1_wrapper .col-md-6:eq(0)'); }); </script>
Cuba kod di bawah. Anda kehilangan elemen DOM untuk lBfrtip