ozdemir / datatables
使用我们快速高效的PHP库轻松简化您的Datatables服务器端处理,无缝优化您的流程。
2.3.16
2024-06-12 14:59 UTC
Requires
- php: >=7.1.3
Requires (Dev)
- phpunit/phpunit: ^7.0|^8.0|^9.0
README
使用我们快速高效的PHP库轻松简化您的Datatables服务器端处理,无缝优化您的流程。 在线演示
功能
- 易于使用。只需几行代码即可生成json。
- 支持通过闭包函数编辑列。
- 支持自定义过滤器。
- 可以处理大多数复杂的查询。
- 支持mysql和sqlite原生PHP。
- 与以下框架协同工作
安装
注意:版本2.0+需要php 7.1.3+ (支持的php版本)
安装库推荐使用Composer
如果您还没有开始使用composer,我强烈建议您使用它。
将名为composer.json
的文件放在项目根目录下,包含以下信息
{
"require": {
"ozdemir/datatables": "2.*"
}
}
然后运行
composer install
或者直接运行
composer require ozdemir/datatables
将自动加载器添加到您的项目中
<?php require_once 'vendor/autoload.php';
现在您可以使用Datatables PHP库了。
<?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();
如果您使用的是codeigniter或laravel等PHP框架,您可以使用相关的数据库适配器。
// 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()); } }
// 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(); });
方法
以下是可用的公共方法列表。
query($query) 必需
- 设置sql查询
generate() 必需
- 运行查询并构建输出
- 以json格式返回输出
- 与generate()->toJson()相同
toJson()
- 以json格式返回输出
- 应在generate()之后调用
toArray()
- 以数组格式返回输出
- 应在generate()之后调用
add($column, function($row){})
- 添加额外的列以供自定义使用
edit($column, function($row){})
- 允许列编辑
filter($column, function(){})
- 允许自定义过滤
- 具有以下方法
- escape($value)
- searchValue()
- defaultFilter()
- between($low, $high)
- whereIn($array)
- greaterThan($value)
- lessThan($value)
hide($columns)
- 从输出中删除列
- 在您只需要在add()或edit()方法中使用数据时很有用。
setDistinctResponseFrom($column)
- 使用给定的列名执行查询,并将返回的数据以distinctData键添加到输出中。
setDistinctResponse($output)
- 将给定数据添加到输出中,带有distinctData键。
getColumns()
- 返回列名(开发用途)
getQuery()
- 返回由库创建的sql查询字符串(开发用途)
示例
<?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框架的集成
要求
Composer
DataTables > 1.10
PHP > 7.1.3
许可证
版权(c)2015 Yusuf ÖZDEMİR,在MIT许可证下发布