openlss / lib-datatables
jQuery Datatables 的 PHP 接口 (https://datatables.net.cn)。简单独立,非框架依赖。
Requires
- php: >=5.3.2
- openlss/func-mda: ~0.0.1
- openlss/func-mda-glob: ~0.0.1
- openlss/lib-datamodel: ~0.0.1
- openlss/lib-db: ~0.0.1
This package is not auto-updated.
Last update: 2024-09-09 11:25:46 UTC
README
jQuery Datatables 的 PHP 接口 (https://datatables.net.cn)。简单独立,非框架依赖。
本文档假设您已有一个运行的 datatables 前端。只需将其指向下面的使用代码即可。
使用
这是标准使用方式,它将在提供的 Db 对象上构建和执行查询。
$obj = DataTables::_get() ->setDB(Db::_get()) //add our database object ->setDataModel('\BrowserModel') //set datamodel to use for row formatting ->setColumns(array('engine','browser','platform','version','grade')) //set column defs ->setPrimary('id') //set primary column ->setTable('table') //set sql table to use ->setupFromRequest() //setup the object from $_REQUEST ->process(); //process the request echo $obj; //uses __toString to output json exit;
这是定义数据回调函数的替代语法
$obj = DataTables::_get() ->setDataCallback('my_data_function') ->setDataModel('\BrowserModel') //set datamodel to use for row formatting ->setColumns(array('engine','browser','platform','version','grade')) //set column defs ->setupFromRequest() //setup the object from $_REQUEST ->process(); //process the request echo $obj; exit;
openlss/lib-datamodels 使用
class BrowserModel extends \LSS\DataModel { //format version public function getVersion(){ return empty($this->version) ? '-' : $this->version; } }
方法
(object) DataTables::_get()
返回一个与
$obj = new DataTables();
($this) DataTables::setDB(\LSS\Db $obj)
设置要调用查询的 LSS\Db 对象
($this) DataTables::setColumns($array)
设置表格中的列数组(应与 SQL 名称匹配)
($this) DataTables::setPrimary($val)
设置主列名称(可以是数组,用于多列)
($this) DataTables::setTable($val)
设置要使用的数据库表(可以是多个,用逗号分隔)注意:目前不支持连接
($this) DataTables::setDataCallback($callback,[$arg1,$arg2...])
设置数据回调函数以提供数据,而不是直接查询数据库。正确的返回是一个包含三个部分的数组,包括
- $result_array 数组中的结果
- $count_results 返回的结果数
- $count_total 记录的总数 示例回调函数
function my_callback_function($columns,$where,$order_by,$limit,$arg1,$arg2){ //execute query here return array($results,$count_results,$count_total); }
($this) DataTables::setDataModel($val)
设置要使用的 datamodel 类。默认使用 \LSS\DataModel,无扩展
($this) DataTables::setParams($name,$val)
存储任意参数,用于在生成的 JSON 中使用
(int) DataTables::getColumnCount()
返回设置的列数(缓存结果以提高速度)
(string) DataTables::getColumnByKey($key)
返回索引号的列名称
(mixed) DataTables::getParam($key)
通过名称(键)返回设置的参数值
(string) DataTables::getJSON()
返回从结果数组构建的 JSON
(array) DataTables::getResult()
返回构建的结果数组
($this) DataTables::setupFromRequest()
从 $_REQUEST 中设置所需的各种部分,以生成查询
($this) DataTables::setupPaging($start=null,$limit=null)
为 SQL 设置分页
($this) DataTables::setupOrdering((mixed...))
动态函数,用于设置排序 参数格式是
- col_number 列号
- col_x_sortable 列是否可排序
- col_x_key 与 $this->columns 相关的列号
- col_x_sort_dir 列的排序方向
($this) DataTables::setupFiltering((mixed...))
注意,这与内置的 DataTables 过滤器不匹配,该过滤器在任意字段上逐词执行。这里可以做到,但担心在大表上效率低下,MySQL 的正则表达式功能非常有限。动态函数用于设置过滤 参数格式是
- search_string 用户搜索字符串
- col_x_searchable 可搜索的列 ID
- col_x_search_string 每列的单独搜索字符串
($this) DataTables::setupQueries()
根据收集的数据设置 SQL 查询
($this) DataTables::proces()
运行查询并构建结果数组
(string) DataTables::__toString()
当对象用作字符串时返回结果 JSON