是否有另一种使用Laravel 5.8在Yajra DataTables中显示导出按钮的方法?
我正在使用yajra DataTables查询用户服务器端的列表。我添加了所有依赖项,但是按钮未显示。这些按钮是副本,PDF,CSV甚至自定义按钮。我尝试的是使用不同版本的jQuery,但仍然没有。当我只使用来自视图的数据数组初始化数据词时,按钮显示并正常工作,但是当我将数据源添加为来自路由和服务器端的数据源时,按钮未显示。有什么缺少的吗?以下是我用于服务器端处理的代码,该代码未显示按钮。调试时,我也不会遇到控制台错误。
dataSource
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');
}
表
<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>
我的CSS和
JS
<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') }}">
库
<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>
是 php或刀片按钮显示:
<?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";
}
?>
表初始化
<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>
I am using Yajra Datatables to query a list of users server side. I added all the dependencies but the buttons are not showing. The buttons are copy, PDF, CSV and even custom buttons are showing. What I have tried is use different versions of JQuery but still nothing. When I just initialize the Datatable using an array of data coming from the view the buttons are showing and working fine but when I add the datasource as coming from a route and server side true the buttons are not showing. Anything am missing? Below is my code for server side processing which is not showing the buttons. I am also not getting console errors when I debug.
Datasource
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');
}
The table
<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>
Below is my my CSS and JS libraries
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>
When I loop through the table like below using php or blade the buttons are showing:
<?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";
}
?>
Table Initialization
<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>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试下面的代码。您缺少LBFRTIP的DOM元素
Try the code below. You are missing a DOM element of lBfrtip