Laravel Datatables服务层实现导出时无法获取查询参数
实现带日期筛选的销售报表(Laravel)
我在Laravel项目里通过服务层结合DataTable,做了一个支持日期范围筛选的销售报表功能,筛选条件直接通过URL查询参数传递,非常直观。
请求示例
前端可以通过带查询参数的GET请求来指定日期范围:
http://localhost:8000/sales_report?start_date=2018-01-01&end_date=2018-01-02
控制器实现代码
这是处理该请求的控制器方法,做了权限校验和参数传递的核心逻辑:
public function salesReport(SalesDatatable $dataTable, Request $request) { // 校验用户权限,无权限则返回401未授权 if (!Auth::user()->can('access-sales-report')) { abort(401); } // 将日期筛选参数传递给DataTable实例,渲染报表视图 return $dataTable->with([ 'start_date' => $request->get('start_date'), 'end_date' => $request->get('end_date'), ])->render('sales.report'); }
代码解析
- 权限控制:利用Laravel的授权系统,通过
can()方法检查用户是否拥有access-sales-report权限,确保只有授权用户能访问报表 - 参数传递:通过
$request->get()获取URL中的start_date和end_date参数,再用with()方法把这些参数注入到SalesDatatable实例中,后续在DataTable的服务层逻辑里就可以用这两个日期来过滤销售数据了 - 视图渲染:最后调用
render()方法加载对应的报表视图,完成页面渲染
内容的提问来源于stack exchange,提问作者Nahid Islam Shaiket
相关产品推荐
相关产品推荐

