ozdemir/datatables

使用我们快速高效的PHP库轻松简化您的Datatables服务器端处理,无缝优化您的流程。

资助包维护!
n1crack

安装次数: 118 303

依赖: 0

建议者: 0

安全: 0

星级: 264

关注者: 20

分支: 89

开放问题: 6

2.3.16 2024-06-12 14:59 UTC

This package is auto-updated.

Last update: 2024-09-24 21:57:46 UTC


README

Latest Stable Version PHP Composer license

使用我们快速高效的PHP库轻松简化您的Datatables服务器端处理,无缝优化您的流程。 在线演示

功能

安装

注意:版本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许可证下发布

如果您喜欢这个库,请考虑给它一个星。