FastAdmin表格默认只有分页信息,但不包含某列的总和或更丰富的统计信息。
但是通过表格的扩展功能,可以达到这一目的。
依旧是控制器+模板+JS配合实现。
1. 控制器
修改控制器的index
方法,在返回的$result
数组中加入extend
项,写入自己要添加的统计数据,示例如下
public function index(){
//设置过滤方法
$this->request->filter(['strip_tags']);
if ($this->request->isAjax()) {
//如果发送的来源是Selectpage,则转发到Selectpage
if ($this->request->request('keyField')) {
return $this->selectpage();
}
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
$total = $this->model
->where($where)
->order($sort, $order)
->count();
$list = $this->model
->where($where)
->order($sort, $order)
->limit($offset, $limit)
->select();
$total_num = $this->model->where($where)->sum('num');
$total_deal = $this->model->where($where)->sum('deal');
$total_mum = $this->model->where($where)->sum('mum');
$result = array("total" => $total, "rows" => $list);
$result['extend'] = [
'total_num' => $total_num,
'total_deal' => $total_deal,
'total_mum' => $total_mum,
];
return json($result);
}
return $this->view->fetch();
}
2. 模板
修改模板 index.html
,在合适的位置加入你要显示的内容,示例如下
<div style="margin-top: 20px;font-size: 16px;">
总数量:<span id="total_num"></span>,
已确认数量:<span id="total_deal"></span>,
总金额:<span id="total_mum"></span>
</div>
3. JavaScript文件
修改对应的JS文件,在行 Table.api.bindevent(table);
下面添加如下代码:
//表格加载成功事件
table.on('load-success.bs.table', function (e, data) {
$("#total_num").text(data.extend.total_num);
$("#total_deal").text(data.extend.total_deal);
$("#total_mum").text(data.extend.total_mum);
});
这样一来当表格成功加载或刷新时,控制器返回的数据就会显示在页面上了。