说明:AdminList
类是辅助列表控制器的类
以下说明中的 $list
变量是 $list = new AdminList();
变量
搜索后显示总数recordsTotal
和搜索数recordsFiltered
$list->where
总条件,是列表页的基本条件。设置$this->where
值。
用此方法设置条件时只用在求recordsTotal
总数时候用到
$list->filter
搜索条件,是用户搜索的条件。设置$this->filter
值。
用此方法设置条件后求recordsFiltered
搜索数
求recordsFiltered
的时候它的条件是这样的。
$where = array_merge($this->where, $this->filter);
方法
$list->setFilter()
用DataTables查询的条件
判断有没有data_form('col')值,有的话给 $list->filter 赋值。
函数接口
/**
* 设置搜索条件
* @param [string] $name [post传递的key_name]
* @param [string] $db_col [数据库表列名称]
* @param [string || array] $default [data_form为空时候的默认值]
*/
public function setFilter($name, $db_col = null, $default = null)
{ ... }
使用方法:
$list->setFilter('col1');
// 同等于下面语句
if(data_form('col1')){
$list->filter['col1'] = data_form('col1');
}
$list->setFilter('col1', 'col_name');
// 同等于下面语句
if(data_form('col1')){
$list->filter['col_name'] = data_form('col1');
}
$list->setFilter('col1', 'col_name', 'val');
// 同等于下面语句
if(data_form('col1')){
$list->filter['col_name'] = data_form('col1');
}else {
$list->filter['col_name'] = 'val';
}
提示: like, in, not in, or 等方式搜索请查看 My_Model 文档
$list->setFilters()
按filters变量,自动设置搜索条件
函数代码
/**
* 自动设置搜索条件
*
* @param [array] $filters [data_form传递的key_name]
*/
public function setFilters($filters)
{
foreach ($filters as $k => $v) {
$this->setFilter($k, isset($v['db'])?$v['db']:$k);
}
}
使用方法
//controller.php
public function listData()
{
// ...more...
$filters = json_decode('{
"aID" : {"name" : "文章ID"}
,"aTitle" : {"name" : "标题"}
,"aContent" : {
"name" : "文章内容"
,"db" : "aContent %%"}
,"mNickName" : {"name" : "作者"}
}', true);
$list->setFilters($this->filters);
//同等于
//$list->setFilter('aID');
//$list->setFilter('aTitle');
//$list->setFilter('aContent', 'aContent %%');
//$list->setFilter('mNickName');
// ...more...
}
$list->setOrder()
简单函数,不用说明
public function setOrder($order)
{
$this->order = $order;
}
使用方法 :
$list->setOrder('pID desc, pSort desc');
$list->setWhere()
简单函数,不用说明
public function setWhere($db_col, $val = null)
{
$this->where[$db_col] = $val;
}
使用方法:
$list->setWhere('del_flag', 0);
$list->setModel()
简单函数,不用说明
public function setModel($model_name, $join = array())
{
$this->model = $this->CI->model($model_name);
$this->join = $join;
}
使用方法:
$list->setModel('model_name');
$list->getListData()
执行Model里的getListData方法并获取统计数据
/**
* 执行Model里的getListData方法并获取统计数据
* @param string $method [获取数据方法名]
* @return [array] 获取列表数据和统计数据
*/
public function getListData($method = 'getListData')
{
$where = array_merge($this->where, $this->filter);
$data['data'] = $this->model->$method($where, $this->order, $this->limit, $this->offset, $this->join);
$data['recordsTotal'] = $this->model->get_count($this->where);
$data['recordsFiltered'] = $this->model->get_count($where);
return $data;
}
使用方法:
$data = $list->getListData();