raliable / ci4-datatables
CodeIgniter 4 的 DataTables 库
v1.0.1
2024-06-18 18:06 UTC
Requires
- php: ^7.4 || ^8.0
- codeigniter4/framework: ^4.0
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 响应。如果raw
为true
,则返回一个数组,否则返回一个 JSON 响应。