Routing Di Codeigniter 4

Tutorial ini akan membahas bagaimana penggunaan routing di codeigniter 4.Sebelum masuk ke topik ini ada baiknya anda telah mengetahui penggunaan controller di Codeigniter 4.

Jika belum baca Controller di Codeigniter 4

Apa itu Route?

Route sendiri dalam bahasa indonesia artinya rute atau jalur.Begitu juga kegunaannya pada codeigniter 4 dan framework lain.Route adalah yang mengatur ketika kita mengakses suatu url, diarahkan ke bagian mana di dalam program ,bisa jadi method,view atau hanya sekarang pesan.Jika masih bingung ,bisa dilihat nanti contoh pengunaan dibawah agar lebih paham.

Menggunakan Route

Secara default route di codeigniter akan mendeteksi method atau fungsi di dalam controller jika penulisannya mengikuti aturan di Codeigniter 4,ini bisa di baca di Controller di Codeigniter 4.

Untuk konfigurasi otomatis mendeteksi fungsi controller bisa diatur di app\Config\Routers.php.Cari bagian dibawah.

<?php
...
$routes->setAutoRoute(true);

Secara default bernilai true ,jika kita rubah menjadi false,maka controller dan method tidak akan terdetect otomatis,harus dideklarasikan di app\Config\Routers.php.

Untuk menambahkan router bisa di file Routers.php di folder app\Config.Sebagai contoh kita punya controller Helloworld.php

<?php namespace App\Controllers;
use CodeIgniter\Controller;

class Helloworld extends Controller
{
    public function index()
    {
        echo 'Hello World!';
    }

    public function medan()
    {
        echo 'I am from medan';
    }
}

Berarti kita harus membuat 2 route untuk controller diatas.

<?php
...
$routes->add('/hello/index','Helloworld::index');
$routes->add('/hello/medan','Helloworld::medan');
Request Method

Menggunakan add berarti kita mengijinkan semua tipe request masuk get,post,put,delete,lebih baik teman-teman menyesuaikan dengan kebutuhan.Sebagai contoh untuk kasus diatas kita hanya butuh get.

<?php
...
$routes->get('/hello/index','Helloworld::index');
$routes->get('/hello/medan','Helloworld::medan');

Untuk http request sendiri Codeigniter 4 memiliki beberapa option:

<?php
...
$routes->get('hello', 'Helloworld::feature');
$routes->post('hello', 'Helloworld::feature');
$routes->put('hello/(:num)', 'Helloworld::feature');
$routes->delete('hello/(:num)', 'Helloworld::feature');

Codeigniter juga punya method bernama match jika kita butuh dua atau lebih jenis request untuk satu route.

<?php
...
$routes->match(['get', 'put'],'hello', 'Helloworld::feature');
Group Route

Di Codeigniter 4 juga terdapat route group,dibutuhkan biasanya jika kita punya route dengan nama depan sama , kebutuhan validasi atau kebutuhan lainnya.Kita ambil contoh route hello kita sebelumnya.

<?php
...
$routes->group('hello', function($routes)
{
    $routes->get('index','Helloworld::index');
    $routes->get('medan','Helloworld::medan');
});
Placeholder

Placeholder disini maksudnya parameter pada route,biasanya digunakan untuk method controller yang punya parameter.

Misal kita punya method controller seperti dibawah.

<?php namespace App\Controllers;
use CodeIgniter\Controller;

class Helloworld extends Controller
{
    ...
    public function kota($kota)
    {
        echo 'I am from '.$kota;
    }
}

Maka route kurang lebih akan seperti ini.

<?php
...
$routes->group('hello', function($routes)
{
    $routes->get('index','Helloworld::index');
    $routes->get('medan','Helloworld::medan');
    //placeholder
    $routes->get('kota/(:alpha)','Helloworld::kota/$1');
});

Ada beberapa jenis placeholder di Codeigniter 4 yang sering digunakan.

  1. (:any) menerima semua jenis karakter.
  2. (:num) hanya menerima angka.
  3. (:alpha) hanya karaketer alphabet.
  4. (:alphanum) kombinasi alphabet dan angka.
Filter Route

Filter biasa digunakan untuk autentikasi akses route atau membuat api logging.Untuk cara penggunaan bisa dilihat dibawah.

<?php
...
//untuk satu route
$routes->get('index','Helloworld::index', ['filter' => 'auth-filter']);
//untuk group route
$routes->group('hello', ['filter' => 'auth-filter'], function($routes)
{
    $routes->get('index','Helloworld::index');
    $routes->get('medan','Helloworld::medan');
    //placeholder
    $routes->get('kota/(:alpha)','Helloworld::kota/$1');
});
?>

Segitu dulu untuk tutorial mengenai route jika ada yang kurang paham tanyakan dibawah.