php的datatables库
使用我们的Lightning-Fast PHP库轻松地简化了您的datatables服务器端处理,从而无缝简化了您的工作流程。现场演示
特征
- 便于使用。仅使用几行代码生成JSON。
- 具有关闭功能的可编辑列。
- 支持自定义过滤器。
- 可以处理最复杂的查询。
- 支持本机PHP的MySQL和SQLite。
- 与:
- 拉拉维尔
- Codeigniter 3
- Codeigniter 4
- phalcon 3+
- Prestashop
- Postgresql
安装
注意: 2.0+版本需要PHP 7.1.3+(支持版本)
安装图书馆的推荐方法是与作曲家
如果您尚未开始使用作曲家,我强烈建议您使用它。
将一个名为composer.json的文件放在您项目的根源上,其中包含此信息:
datatables": "2.*"
}
}\”>
{
\"require\": {
\"ozdemir/ datatables \": \"2.*\"
}
}
然后运行:
composer install
或刚运行:
composer require ozdemir/ datatables
将自动加载器添加到您的项目中:
<?php require_once \' vendor/autoload.php \' ;
您现在准备开始使用datatables PHP库。
datatables ;
use Ozdemir\\ datatables \\DB\\MySQL;
$config = [ \’host\’ => \’localhost\’,
\’port\’ => \’3306\’,
\’username\’ => \’homestead\’,
\’password\’ => \’secret\’,
\’database\’ => \’sakila\’ ];
$dt = new datatables ( new MySQL($config) );
$dt->query(\’Select film_id, title, description from film\’);
echo $dt->generate();\”>
<?php require_once \' vendor/autoload.php \' ; use Ozdemir \\ datatables \\ datatables ; use Ozdemir \\ datatables \\ DB \\ MySQL ; $ config = [ \' host \' => \' localhost \' , \' port \' => \' 3306 \' , \' username \' => \' homestead \' , \' password \' => \' secret \' , \' database \' => \' sakila \' ]; $ dt = new datatables ( new MySQL ( $ config ) ); $ dt -> query ( \' Select film_id, title, description from film \' ); echo $ dt -> generate ();
如果您使用的是PHP框架,例如CodeIgniter或Laravel,则可以使用相关的数据库适配器。
datatables ;
use Ozdemir\\ datatables \\DB\\Codeigniter4Adapter;
class Home extends BaseController
{
public function index()
{
return view(\’index\’);
}
public function ajax()
{
// CI 4 builder class
$db = Database::connect();
$builder = $db->table(\’Track\’);
$builder->select(\’TrackId, Name, UnitPrice\’);
// datatables Php Library
$ datatables = new datatables (new Codeigniter4Adapter);
// using CI4 Builder
$ datatables ->query($builder);
// alternatively plain sql
// $ datatables ->query(\’Select TrackId, Name, UnitPrice from Track\’);
return $this->response->setJSON($ datatables ->generate()->toJson());
}
}\”>
// Codeigniter 4 Example <?php namespace App \\ Controllers ; use Config \\ Database ; use Ozdemir \\ datatables \\ datatables ; use Ozdemir \\ datatables \\ DB \\ Codeigniter4Adapter ; class Home extends BaseController { public function index () { return view ( \' index \' ); } public function ajax () { // CI 4 builder class $ db = Database:: connect (); $ builder = $ db -> table ( \' Track \' ); $ builder -> select ( \' TrackId, Name, UnitPrice \' ); // datatables Php Library $ datatables = new datatables ( new Codeigniter4Adapter ); // using CI4 Builder $ datatables -> query ( $ builder ); // alternatively plain sql // $ datatables ->query(\'Select TrackId, Name, UnitPrice from Track\'); return $ this -> response -> setJSON ( $ datatables -> generate ()-> toJson ()); } }
datatables ;
use Ozdemir\\ datatables \\DB\\LaravelAdapter;
Route::get(\’/ajax/laravel\’, function () {
$dt = new datatables (new LaravelAdapter);
$dt->query(
Track::query()
->select([
\’TrackId\’,
\’Track.Name\’,
\’Title as Album\’,
\’MediaType.Name as MediaType\’,
\’UnitPrice\’,
\’Milliseconds\’,
\’Bytes\’,
])
->join(\’Album\’, \’Album.AlbumId\’, \’Track.AlbumId\’)
->join(\’MediaType\’, \’MediaType.MediaTypeId\’, \’Track.MediaTypeId\’)
); // same as the previous example, sql statement can be used.
return $dt->generate();
});
\”>
// Laravel Example <?php // routes/web.php use Ozdemir \\ datatables \\ datatables ; use Ozdemir \\ datatables \\ DB \\ LaravelAdapter ; Route:: get ( \' /ajax/laravel \' , function () { $ dt = new datatables ( new LaravelAdapter ); $ dt -> query ( Track:: query () -> select ([ \' TrackId \' , \' Track.Name \' , \' Title as Album \' , \' MediaType.Name as MediaType \' , \' UnitPrice \' , \' Milliseconds \' , \' Bytes \' , ]) -> join ( \' Album \' , \' Album.AlbumId \' , \' Track.AlbumId \' ) -> join ( \' MediaType \' , \' MediaType.MediaTypeId \' , \' Track.MediaTypeId \' ) ); // same as the previous example, sql statement can be used. return $ dt -> generate (); });
方法
这是可用公共方法的列表。
需要查询($查询)
- 设置SQL查询
需要()
- 运行查询并构建输出
- 返回输出为JSON
- 与生成() – > tojson()相同
tojson()
- 返回输出为JSON
- 应在生成后调用()
toarray()
- 返回输出作为数组
- 应在生成后调用()
添加($ column,function($ row){})
- 添加用于自定义使用的额外列
编辑($ column,function($ row){})
- 允许列编辑
过滤器($ column,function(){})
- 允许自定义过滤
- 它具有以下方法
- 逃生($ value)
- searchValue()
- DefaultFilter()
- 在($ low,$ high)之间
- 其中($ array)
- 大街($ value)
- Lessthan($ value)
hide($ linters)
- 从输出中删除列
- 当您只需要使用add()或edit()方法中的数据时,这很有用。
setDistInctresponsefrom($ linter)
- 用给定的列名执行查询,并使用不同的数据键将返回的数据添加到输出中。
setDistInctresponse($输出)
- 使用不同的数据键将给定数据添加到输出中。
getColumns()
- 返回列名(出于开发目的)
getquery()
- 返回由库创建的SQL查询字符串(出于开发目的)
例子
datatables ;
use Ozdemir\\ datatables \\DB\\SQLite;
$path = __DIR__ . \’/../path/to/database.db\’;
$dt = new datatables ( new SQLite($path) );
$dt->query(\’Select id, name, email, age, address, plevel from users\’);
$dt->edit(\’id\’, function($data){
// return a link.
return "<a href=\’user.php?id=" . $data[\’id\’] . "\’>edit</a>";
});
$dt->edit(\’email\’, function($data){
// masks email : mail@mail.com => m***@mail.com
return preg_replace(\’/(?<=.).(?=.*@)/u\’,\’*\’, $data[\’email\’]);
});
$dt->edit(\’address\’, function($data){
// checks user access.
$current_user_plevel = 4;
if ($current_user_plevel > 2 && $current_user_plevel > $data[\’plevel\’]) {
return $data[\’address\’];
}
return \’you are not authorized to view this column\’;
});
$dt->hide(\’plevel\’); // hides \’plevel\’ column from the output
$dt->add(\’action\’, function($data){
// returns a link in a new column
return "<a href=\’user.php?id=" . $data[\’id\’] . "\’>edit</a>";
});
$dt->filter(\’age\’, function (){
// applies custom filtering.
return $this->between(15, 30);
});
echo $dt->generate()->toJson(); // same as \’echo $dt->generate()\’;\”>
<?php require_once \' vendor/autoload.php \' ; use Ozdemir \\ datatables \\ datatables ; use Ozdemir \\ datatables \\ DB \\ SQLite ; $ path = __DIR__ . \' /../path/to/database.db \' ; $ dt = new datatables ( new SQLite ( $ path ) ); $ dt -> query ( \' Select id, name, email, age, address, plevel from users \' ); $ dt -> edit ( \' id \' , function ( $ data ){ // return a link. return \" <a href=\'user.php?id= \" . $ data [ \' id \' ] . \" \'>edit</a> \" ; }); $ dt -> edit ( \' email \' , function ( $ data ){ // masks email : mail@mail.com => m***@mail.com return preg_replace ( \' /(?<=.).(?=.*@)/u \' , \' * \' , $ data [ \' email \' ]); }); $ dt -> edit ( \' address \' , function ( $ data ){ // checks user access. $ current_user_plevel = 4 ; if ( $ current_user_plevel > 2 && $ current_user_plevel > $ data [ \' plevel \' ]) { return $ data [ \' address \' ]; } return \' you are not authorized to view this column \' ; }); $ dt -> hide ( \' plevel \' ); // hides \'plevel\' column from the output $ dt -> add ( \' action \' , function ( $ data ){ // returns a link in a new column return \" <a href=\'user.php?id= \" . $ data [ \' id \' ] . \" \'>edit</a> \" ; }); $ dt -> filter ( \' age \' , function (){ // applies custom filtering. return $ this -> between ( 15 , 30 ); }); echo $ dt -> generate ()-> toJson (); // same as \'echo $dt->generate()\';
路线图
- 每个班级更好的测试套件
- 改善PHP框架的集成
要求
作曲家
datatables > 1.10
PHP> 7.1.3
执照
版权(c)2015Yusufözdemír,根据MIT许可发布
