首页 > 解决方案 > 在 dataTables Laravel 中添加 csv 和 excel 导出按钮

问题描述

我只想将 csv 和 excel 导出按钮添加到一个数据表中。我的控制器文件:

public function index(Request $request)
{
    $Databaseurl = Route('orders.index');
    if ($request->ajax()) {
        $orders = Order::all();
        return datatables()->of($orders)
            ->editColumn('price', function ($order) {
                return '<div class="text-nowrap text-center">'.number_format($order->price, 0, '.', ',').'</div>';
            })
            ->editColumn('address', function ($order) {
                return \Illuminate\Support\Str::limit($order->address,25);
            })
            ->editColumn('city', function ($order) {
                return '<div class="text-center">'.\Illuminate\Support\Str::limit($order->city,25).'</div>';
            })
            ->addIndexColumn()
            ->addColumn('action', function($order){
                return '<a href="'.route('order.edit',['id' => $order->id]).'" class="text-nowrap btn-sm btn-primary text-center"><i class="far fa-eye"></i> view</a>';
            })
            ->rawColumns(['action','city','price'])
            ->toJson();
    }
    return view('order.index',compact('Databaseurl'));
}

和数据表jquery代码:

<script type="text/javascript">
    $(function () {
        var table = $('.mydatatable').DataTable({
            "oLanguage": {
                "sUrl": "https://cdn.datatables.net/plug-ins/1.10.19/i18n/Persian.json",
            },
            "pageLength": 25,
            processing: true,
            serverSide: true,
            ajax: "{{ $Databaseurl }}",
            columns: [
                {data: 'id', name: 'id'},
                {data: 'customer_name', name: 'customer_name'},
                {data: 'address', name: 'address', searchable: false},
                {data: 'city', name: 'city'},
                {data: 'price', name: 'price', searchable: false},
                {data: 'created_at', name: 'created_at', searchable: false},
                {data: 'action', name: 'action', orderable:false,searchable: false},
            ],
        });
    });
</script>

我也看了这个视频,但我不希望通过更困难的步骤在同一个控制器和刀片文件中解决这个问题。因为我只想要一个视图表有这个解决方案吗?

标签: laravel

解决方案


几天后,我发现了这种方式:首先将此链接添加到您的 blode 文件中:

<link rel="stylesheet" href="https://cdn.datatables.net/buttons/1.0.3/css/buttons.dataTables.min.css">

<script src="https://cdn.datatables.net/buttons/1.6.4/js/dataTables.buttons.min.js"></script>

然后将以下代码添加到 js 数据表代码中:

 dom: 'Bfrtip',
 buttons: [
      'copy', 'excel',
 ],

推荐阅读