头部和脚部

v1.6.10版本之后,在表格的上增加了头部和脚部两个区块,可以在里面填入你想要的内容

  1. $grid->header(function ($query) {
  2. return 'header';
  3. });
  4. $grid->footer(function ($query) {
  5. return 'footer';
  6. });

其中闭包函数的参数$query\Illuminate\Database\Eloquent\Builder类实例,可以用来执行一些自定义的查询来获取数据,下面是两个不同场景的使用举例

头部

比如要在用户数据模块的表格头部插入一个饼状图表,来显示用户性别比例,可以按照下面的方法来实现

先查询出性别比例数据:

  1. $grid->header(function ($query) {
  2. $gender = $query->select(DB::raw('count(gender) as count, gender'))
  3. ->groupBy('gender')->get()->pluck('count', 'gender')->toArray();
  4. $doughnut = view('admin.chart.gender', compact('gender'));
  5. return new Box('性别比例', $doughnut);
  6. });

然后使用图表插件chartjs,来构建图表, 视图文件resources/views/admin/chart/gender.blade.php如下

  1. <canvas id="doughnut" width="200" height="200"></canvas>
  2. <script>
  3. $(function () {
  4. var config = {
  5. type: 'doughnut',
  6. data: {
  7. datasets: [{
  8. data: [
  9. {{ $gender['m'] }},
  10. {{ $gender['f'] }},
  11. {{ $gender[''] }}
  12. ],
  13. backgroundColor: [
  14. 'rgb(54, 162, 235)',
  15. 'rgb(255, 99, 132)',
  16. 'rgb(255, 205, 86)'
  17. ]
  18. }],
  19. labels: [
  20. 'Male',
  21. 'Female',
  22. 'Unknown'
  23. ]
  24. },
  25. options: {
  26. maintainAspectRatio: false
  27. }
  28. };
  29. var ctx = document.getElementById('doughnut').getContext('2d');
  30. new Chart(ctx, config);
  31. });
  32. </script>

实现效果如下:

WX20190310-195204

脚部

一个比较常见的场景是在数据表格的脚部显示统计信息,比如在订单表格的脚部加入收入统计,可以参考下面的代码实现:

  1. $grid->footer(function ($query) {
  2. // 查询出已支付状态的订单总金额
  3. $data = $query->where('status', 2)->sum('amount');
  4. return "<div style='padding: 10px;'>总收入 : $data</div>";
  5. });

如果有比较复杂的脚部需要显示,也可以像头部例子一样,使用视图对象来实现。