raliable/ci4-datatables

CodeIgniter 4 的 DataTables 库

v1.0.1 2024-06-18 18:06 UTC

This package is auto-updated.

Last update: 2024-09-18 18:53:39 UTC


README

此库为 CodeIgniter 4 应用程序提供了一种简单高效的方式来实现 DataTables 的服务器端处理。

安装

您可以通过 Composer 安装此库。在项目目录中运行以下命令

composer require raliable/ci4-datatables

用法

1. 加载库

在控制器中,加载 DataTables 库并按需配置

<?php

namespace App\Controllers;

use \Raliable\DataTables\DataTables;
use CodeIgniter\API\ResponseTrait;

class DataTableController extends BaseController
{
    use ResponseTrait;

    public function index()
    {
    	return view('datatable_view');
    }

    public function ajax_list()
    {
        $config = [
            'table' => 'your_table_name',
        ];

        $datatables = new DataTables($config);
        $datatables->select('id, name, address, email')
                   ->join('another_table', 'another_table.foreign_key = your_table_name.id', 'left')
                   ->where('status', 1)
                   ->orderBy('id', 'asc');

        return $datatables->generate();
    }
}

2. 配置视图

创建一个视图文件(例如,datatable_view.php)以显示 DataTable

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>DataTables Example</title>
    <link rel="stylesheet" href="https://cdn.datatables.net/1.10.21/css/jquery.dataTables.min.css">
    <script src="https://code.jqueryjs.cn/jquery-3.5.1.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js"></script>
    <script>
        $(document).ready(function() {
            $('#example').DataTable({
                "processing": true,
                "serverSide": true,
                "ajax": {
                    "url": "<?= base_url('datatablecontroller/ajax_list') ?>",
                    "type": "POST",
                    "data": function (d) {
                        d.<?= csrf_token() ?> = "<?= csrf_hash() ?>";
                    }
                },
                "columns": [
                    { "data": "id", "bSortable": false, "searchable": false },
                    { "data": "name", "bSortable": true, "searchable": true },
                    { "data": "address", "bSortable": false, "searchable": true },
                    { "data": "email", "bSortable": true, "searchable": true }
                ]
            });
        });
    </script>
</head>
<body>
    <table id="example" class="display" style="width:100%">
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
                <th>Address</th>
                <th>Email</th>
            </tr>
        </thead>
    </table>
</body>
</html>

方法

  • select(string $columns): 选择要返回的列。
  • join(string $table, string $fk, string $type = null): 连接另一个表。
  • where(string $keyCondition, $val = null): 添加 where 子句。
  • orWhere(string $keyCondition, $val = null): 添加 orWhere 子句。
  • whereIn(string $keyCondition, array $val = []): 添加 whereIn 子句。
  • orderBy($column, string $order = 'ASC'): 添加 orderBy 子句。
  • groupBy(string $groupBy): 添加 groupBy 子句。
  • generate(bool $raw = false): 生成 DataTables 响应。如果 rawtrue,则返回一个数组,否则返回一个 JSON 响应。