我有一个数据表,其中包含从数据库检索的数据。当我在搜索文本框(搜索文本框是由数据表生成的)中输入一些关键字时,表的结果会发生变化。这很好。但是当我点击导出到csv或pdf时,csv或pdf的结果将从数据库而不是数据表中检索。
如何导出到csv/pdf基于数据表插件使用laravel?
//datatable插件<link href="plugins/datatables/dataTables.bootstrap.css" rel="stylesheet" type="text/css" />
<script src="plugins/datatables/jquery.dataTables.min.js" type="text/javascript"></script>
<script src="plugins/datatables/dataTables.bootstrap.min.js" type="text/javascript"></script>
php //
public function sales_csv(){
// columns
$arrSelectFields = array(
-- columns --
);
// query
-- sql queries --
// passing the columns which I want from the result set. Useful when we have not selected required fields
$arrColumns = $arrSelectFields;
// define the first row which will come as the first row in the csv
$arrFirstRow = $arrSelectFields;
// building the options array
$options = array(
'columns' => $arrColumns,
'firstRow' => $arrFirstRow,
);
// creating the Files object from the Utility package.
$Files = new Files;
return $Files->convertToReportsSalesCSV($query, $options);
}
我可能会将关键字发布到我的服务器并再次运行sql查询过滤这些结果然后创建csv/pdf
一种方法是使用jQuery并调用ajax。
首先,给表一个ID。接下来,使用这段代码获取表本身和它的HTML:
var html = $('#myCoolTable').html();
然后通过ajax调用Laravel生成通过HTML传递的PDF。你可以使用这个HTML到PDF库:http://wkhtmltopdf.org/
然后,您应该得到与屏幕上的表完全相同的PDF(使用任何过滤器等)。
作为旁注,您还可以将CSS添加到HTML中以提供给PDF库,它甚至会使表的样式也相同!