Builder DataTable
Pengenalan
Builder datatable
lebih fleksibel dibandingkan Query DataTable
sebelumnya. Anda dapat menggunakan semua builder yang telah codeigniter4 sediakan. Baca dokumentasinya disini
Inisialisasi
Helper Method (Recommended)
$query = db_connect()->table('table');
return datatables($query)->make();
Class Name Method
use Irsyadulibad\DataTables\DataTables;
$query = db_connect()->table('table');
return DataTables::use($query)->make();
Penggunaan
Anda dapat menggunakan query builder seperti biasa, lalu meneruskannya pada datatables
$table = db_connect()->table('users');
$query = $table->select('users.*, addresses.name as address')
->where('users.role', 'admin')
->join('addresses', 'users.id = addresses.user_id');
return datatables($query)->make();
Set Output
Parameter default adalah false
yang otomatis akan mengembalikan data dalam notasi JSON. Anda dapat mengembalikan dump data dengan menempatkan true
sebagai parameter.
DataTables::use('table')
->make(true);
Column Editing
Builder DataTable
juga dapat melakukan penyuntingan pada kolom sebelum dikeluarkan menjadi JSON
Add Column
Menambah kolom yang tidak terdapat pada tabel
// <name>, <callback>
->addColumn('action', function($data) {
return '<a href="/edit/'.$data->id.'">edit</a>';
})
Edit Column
// <name>, <callback>
->editColumn('created_at', function($value) {
return format($value);
})
// atau dengan argumen data pada parameter kedua
->editColumn('color', function($value, $data) {
return "$value {$data->type}";
})
Raw Columns
Secara default, semua data yang dikeluarkan akan diescape terlebih dahulu. Hal itu untuk mencegah serangan XSS. Tetapi anda tetap dapat melewatkannya dengan method berikut
->rawColumns(['bio'])
Hide Columns
Menghilangkan kolom dari output JSON
->hideColumns(['password'])
Index Column
Dalam beberapa kasus, anda mungkin perlu menampilkan index kolom dari data yang anda tampilkan, seperti untuk memberikan nomor dll. Fungsi ini akan menambah sebuah kolom bernama default DT_RowIndex
.
->addIndexColumn()
// dengan nama kustom
->addIndexColumn('CustomRowIndex')