Baca Artikel Belajar Pemrograman Framework Codeigniter 4

Belajar Pemrograman Framework Codeigniter 4

Artikel seputar pemrgoraman framework Codeigniter 4

CodeIgnter 4 : Implementasi dan Integrasi Menggunakan Datatable

CodeIgnter 4 : Implementasi dan Integrasi Menggunakan Datatable

Sobatcoding.com - Tutorial implementasi dan integrasi Datatable menggunakan Codeigniter 4

Pada artikel kali ini, kita akan mencoba implementasi dan integrasi data ke dalam Datatable menggunakan codeigniter 4. Pada kesempatan kali ini kita akan mencoba beberapa cara atau metode seperti basic installation, ajax source data (Menggunakan Ajax) dan server side integration.

Adapaun plugin jquery yang kita gunakan adalah Datatable. Kalian bisa membaca dokumen lengkapnya di link berikut ini https://datatables.net/manual/.

Langsung saja kita ikuti langkah-langkahnya berikut ini. 

Basic Installation

Metode ini adalah metode yang paling mudah, karena kita hanya perlu memanggil simple function seperti berikut ini.

$(document).ready(function() {
    $('#namaTable').DataTable();
} );

Untuk contoh menggunakan database kita buat sebuah controller dan sebuah view seperti berikut:

<?php

namespace App\Controllers;

use App\Controllers\BaseController;
use App\Models\Artikel;

class DatatableController extends BaseController
{
    public function index()
    {
    
        $artikel = new Artikel();
        $data = [
            'artikel' => $artikel->findAll(),
        ];
        
        return view('table', $data);
    }
}

Untuk view kita buat sederhana seperti berikut:

<!DOCTYPE html>
 <html lang="id">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>List Artikel</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/css/all.min.css" integrity="sha512-YWzhKL2whUzgiheMoBFwW8CKV4qpHQAEuvilg9FAn5VJUDwKZZxkJNuGM4XkWuk94WCrrwslk8yWNGmY1EduTA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
        <!-- Datatable-->
        <link rel="stylesheet" href="https://cdn.datatables.net/1.11.5/css/jquery.dataTables.min.css" />

        <style>
            body {
                margin: 0;
                padding: 0;
                height: 100%;
            }
            section {
                width:100%;
                height:100%;
                display: block;
            }
        </style>
    </head>
    <body>
        <section>
            <div class="container">
                <h1 class="mt-5">Datatable Artikel</h1>
                <hr />
                <table id="dataTable" class="table table-hover table-bordered">
                    <thead>
                        <tr>
                            <th>No</th>
                            <th>Judul</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php
                            foreach ($artikel as $index=>$row) {
                        ?>
                            <tr>
                                <td><?= $index+1; ?></td>
                                <td><?= $row['title']; ?></td>
                            </tr>
                        <?php
                            }
                        ?>
                    </tbody>
                </table>
               
            </div>
        </section>
    </body>
    
    <script src="https://code.jquery.com/jquery-3.5.1.js"></script>
    <script src="https://cdn.datatables.net/1.11.5/js/jquery.dataTables.min.js" ></script>
    <script>

        $(document).ready( function () {
            $('#dataTable').DataTable();
        } );

    </script>
 </html>

Kita buat sebuah route untuk akses ke halaman datatable seperti berikut :

$routes->get('/datatable', 'DatatableController::index');

Jalankan php spark serve. Hasil dari script di atas adalah seperti gambar berikut.

Datatable sobatcoding

 

Ajax Source Data

Jika kita menggunakan Ajax sebagai source data kita buat dahulu sebuah function dan route yang berfungsi menampilkan data dalam bentuk JSON. Perhatikan contoh berikut:

public function listData()
{
        $artikel = new Artikel();
        $data = $artikel->findAll();
        if(!empty($data))
        {
            foreach($data as $index=>$val)
            {
                $data[$index] = $val;
                $data[$index]['number'] = $index+1;
            }
        }
        return $this->response->setJSON(['data' => $data ]);
 }

Dari script di atas kita buat sebuah function listData yang berfungsi menampilkan data artikel ke dalam format JSON.

Kemudian kita tambahkan route baru seperti berikut:

$routes->get('/datatable/list-data', 'DatatableController::listData');

Untuk view kita rubah sedikit menjadi seperti berikut:

<!DOCTYPE html>
 <html lang="id">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>List Artikel</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/css/all.min.css" integrity="sha512-YWzhKL2whUzgiheMoBFwW8CKV4qpHQAEuvilg9FAn5VJUDwKZZxkJNuGM4XkWuk94WCrrwslk8yWNGmY1EduTA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
        <!-- Datatable-->
        <link rel="stylesheet" href="https://cdn.datatables.net/1.11.5/css/jquery.dataTables.min.css" />

        <style>
            body {
                margin: 0;
                padding: 0;
                height: 100%;
            }
            section {
                width:100%;
                height:100%;
                display: block;
            }
        </style>
    </head>
    <body>
        <section>
            <div class="container">
                <h1 class="mt-5">Datatable Artikel</h1>
                <hr />
                <table id="dataTable" class="table table-hover table-bordered">
                    <thead>
                        <tr>
                            <th>No</th>
                            <th>Judul</th>
                        </tr>
                    </thead>
                    <tbody>
                        
                    </tbody>
                </table>
               
            </div>
        </section>
    </body>
    
    <script src="https://code.jquery.com/jquery-3.5.1.js"></script>
    <script src="https://cdn.datatables.net/1.11.5/js/jquery.dataTables.min.js" ></script>
    <script>

        $(document).ready( function () {
            $('#dataTable').DataTable( {
                "ajax": "<?= base_url('datatable/list-data') ?>",
                columns: [
                    { "data": "number", class: "text-left" },
                    { "data": "title" },
                ],
            } );
        } );

    </script>
 </html>

 

Untuk bagian ini sesuaikan dengan field yang kalian ingin tampilkan di datatable tersebut.

columns: [
                    { "data": "number", class: "text-left" },
                    { "data": "title" },
                ],

 

Server Side Integration

Kita tambahkan function di model Artikel seperti berikut:

public function getDatatable($limit=10, $offset=0, $search="")
    {
        $builder = $this->limit($limit, $offset);
        if( $search )
        {
            $builder->like('title', $search);
        }
        return $builder->get()->getResultArray();
    }

    public function getCount()
    {
        return $this->get()->getNumRows();
    }

    public function getFiltered($search="")
    {
        $builder = $this;
        if( $search )
        {
            $builder->like('title', $search);
        }
        return $builder->get()->getNumRows();
    }

Kita buat sebuah function baru di controller seperti berikut:

public function dataTable()
    {
        $artikel = new Artikel();
        $count = $artikel->getCount();
        $filtered = $artikel->getFiltered($this->request->getPost('search')['value']);
        $data = $artikel->getDatatable($this->request->getPost('length'), $this->request->getPost('start'), $this->request->getPost('search')['value']);
        $start = $this->request->getPost('start')+1;

        if(!empty($data))
        {
            foreach($data as $index=>$val)
            {
                $data[$index] = $val;
                $data[$index]['number'] = $start++;
            }
        }

        return $this->response->setJSON([
            "draw"=> $this->request->getPost('draw') ? $this->request->getPost('draw') : 1,
            "recordsTotal"=> $count,
            "recordsFiltered"=> $filtered,
            'data' => $data 
        ]);
    }

 

Untuk javascript kita update seperti berikut.

$(document).ready( function () {
            $('#dataTable').DataTable( {
                "processing": true,
                "serverSide": true,
                "ajax": {
                    "url" : "<?= base_url('datatable/data') ?>",
                    "type": "POST"
                },
                columns: [
                    { "data": "number", class: "text-left" },
                    { "data": "title" },
                ],
            } );
        } );

 

Sekian tutorial kali ini. Jika teman-teman memiliki pertanyaan atau saran mengenai artikel ini, jangan ragu untuk meninggalkan komentar pada form di bawah ini.

Semoga bermanfaat.


Daftar Artikel

01
CodeIgniter 4 : Cara Install Codeigniter 4 Melalui Composer atau Manual
Artikel membahasa cara install Codeigniter 4 melalui composer atau manual
02
CodeIgniter 4 : Cara Menjalankan CodeIgniter 4 di Xampp atau Laragon
Sobatcdoing.com - Cara menjalankan CodeIgniter 4 di Xampp atau Laragon
03
CodeIgniter 4 : Belajar Routing dan Memahami Controller di CodeIgniter 4
Sobatcoding.com - Belajar Routing dan Memahami Controller di CodeIgniter 4
04
Codeigniter 4 : Konfigurasi Database MYSQL
sobatcoding.com - cara konfigurasi / setting ke database mysql
05
CodeIgniter 4: Tentang Modeling Data dan Contoh Penggunaannya
Sobatcoding.com - Tutorial lengkap codeigniter 4 tentang modeling data
06
Belajar Query Builder pada Codeingiter 4
Sobatcoding.com - Tutorial lengkap belajar query builder pada codeigniter 4
07
Codeigniter 4 Cara Mudah Membuat Pagination dengan Bootstrap
sobatcoding.com - Membuat pagination dengan bootstrap Codeigniter 4
08
CodeIgnter 4 : Implementasi dan Integrasi Menggunakan Datatable
Sobatcoding.com - Tutorial implementasi Codeigniter 4 menggunakan Datatable
09
CodeIgniter 4: Kirim Email Menggunakan Email Hosting Via SMPT Protocol
Sobatcoding.com - Kirim email menggunakan email hosting via SMPT Protocol
10
CodeIgniter 4 Tutorial Sederhana Membuat Form Login dan Logout
Sobatcoding.com - Tutorial sederhana membuat form login dan logout
11
Membuat Fitur Middleware Menggunakan Filters Pada CodeIgniter 4
Sobatcoding.com - Tutorial Membuat Fitur Middleware Menggunakan Filters pada CodeIgniter 4
12
Codeigniter 4 : Cara Submit Form dan Upload File Dengan Ajax
Sobatcoding.com - Tutorial lengkap cara submit form dan upload file menggunakan ajax dan codeigniter 4
13
Cara Upload Codeigniter 4 Ke Hosting Cpanel Serta Menghilangkan Public dan Index.php
sobatcoding.com - Tutorial lengkap cara upload codeigniter 4 ke hosting cpanel serta menghilangkan pPublic dan index.php
14
CodeIgniter 4 : Membuat Barcode Sederhana Menggunakan PHP Barcode Generator
Sobatcoding.com - Tutorial Lengkap Membuat Barcode Sederhana Menggunakan PHP Barcode Generator di Codeigniter 4
15
Codeigniter 4 : Membuat QR Menggunakan Library QR Code
Sobatcoding.com - Tutorial lengkap cara membuat QR Code Sederhana dengan Codeigniter 4
16
REST API Codeigniter 4 Menggunakan JWT Auth
Sobatcoding.com - Tutorial membuat REST API menggunakan JWT Auth

Produk kami