说明: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();