Mempelajari Routing CodeIgniter 4

irfan-photo irfan 2 yang lalu

Mempelajari Routing CodeIgniter 4

Routing itu kalau diterjemahkan jadi bahasa indonesia maka artinya rute

routing di codeigniter 4 ini berarti berguna untuk menentukan rute URL

jadi ketika mengakses web anda akan melalui pengecekan routing terlebih dahulu tersedia atau tidak

jika tersedia maka akan dilanjutkan keproses berikutnya dan jika tidak maka akan memunculkan halaman 404 error

routing di CI 4 dapat dilakukan secara otomatis atau manual, tergantung kebutuhan anda nantinya saat membuat aplikasi

file routing codeigniter 4 terletak di app/Config/Routes.php yang didalamnya sudah ada kode default untuk routing

disini kalian hanya akan fokus pada bagian Router Setup dan Route Definitions

oke kita bahas satu persatu bagian tersebut

Router Setup

dibagian ini kalian bisa melakukan setting default terhadap route yang nantinya akan digunakan, berikut kode yang ada dan penjelasannya

$routes->setDefaultNamespace('App\Controllers');

Kode diatas berguna untuk mengatur default namespace controller yang nantinya akan kalian buat, menurut saya ini tidak perlu dirubah dan biarkan default

$routes->setDefaultController('Home');

kode diatas digunakan untuk mengatur default controller atau bisa disebut default halaman index, terlihat defaultnya berisi nilai Home yang artinya default index tersebut mengarah ke file Controller yang terletak di app/Controllers/Home.php

disini kalian bisa merubah sesuai kebutuhan masing-masing aplikasi yang akan dibuat

$routes->setDefaultMethod('index');

maksudnya setDefaultMethod berarti nantinya saat File Controllers diakses maka untuk menentukan default methodnya merujuk pada method index sebagai defaultnya

coba kalian buka file controllers Home.php pasti akan ada method yang diberi nama index

$routes->setTranslateURIDashes(false);

fungsi kode diatas digunakan untuk menentukan apakah url yang bersifat dash (-) akan ditranslate menjadi underscore atau tidak, jika segment pertama anda menggunakan dash maka wajib untuk mengaktifkan fitur ini agar method pada controler dapat terbaca dengan baik

$routes->set404Override();

kode diatas digunakan untuk mereplace atau mengganti halaman 404

jika anda tidak suka dengan tampilan error bawaan codeigniter 4 anda bisa menggunakan custom error sendiri dengan mengaturnya

$routes->setAutoRoute(true);

method setAutoRoute digunakan untuk membuat automatis routing, jika anda ingin menggunakan routing manual maka bisa merubah nilainya menjadi false

jadi ketika anda menonaktifkan fitur auto route ini maka nantinya ketika mengakses controller yang ada namun belum didefinisikan di routes maka tidak akan terbaca dan akan menampilkan error 404

jadi solusinya adalah mendifinisikannya secara manual dibagian Route Definitions

Route Definitions

dibagian ini kalian bisa mendefinisikan route yang akan dibuat secara manual

terdapat kode default yang sudah ditulis yaitu $routes->get('/', 'Home::index');

kode diatas merupakan kode bawaan codeigniter saat menginstall dan bisa kalian rubah sesuai kebutuhan nantinya

penulisan kode routes ini tidak hanya seperti diatas saja terdapat berbagai cara untuk mendifinisikan route, berikut saya akan bahas satu persatu

Menggunakan HTTP Method

selain request get yang digunakan kalian juga bisa menggunakan request http yang lain yaitu post, put, delete

contoh penulisannya

$routes->get(path, 'Controller::method');
$routes->post(path, 'Controller::method');
$routes->put(path, 'Controller::method');
$routes->delete(path, 'Controller::method');

jika ingin menggunakannya lebih dari satu request maka kalian bisa menggunakan method match, berikut penulisannya

$routes->match(['get','post'], path, 'Controller::method');

atau jika ingin menggunakan semua request http yang ada kalian bisa menggunakan method add, berikut kode penulisannya

$routes->add(path, 'Controller::method');

Catatan : sebaiknya gunakan method request http biasa saja dibanding menggunakan method add, karena jika kebutuhannya hanya disatu request saja maka itu akan meningkatkan performance aplikasi

Menangani Segment URL Dinamis

URL dinamis merupakan bagian yang tidak akan terlewatkan dari website sendiri, karena sifatnya dinamis maka URL tersebut akan berbeda-beda nilai segmentnya

misalnya saya punya url sebagai berikut

  • http://localhost:8080/post/belajar-codeigniter-2
  • http://localhost:8080/post/belajar-codeigniter-3
  • http://localhost:8080/post/belajar-codeigniter-4

terlihat terdapat nilai segment yang berubah (dinamis) yaitu sehabis segment post, nah untuk menangkap nilai segment yang dinamis ini membutuhkan cara khusus untuk menanganinya

terdapat beberapa cara yang bisa digunakan untuk menangkap nilai segment diatas yaitu dengan menggunakan placeholders , custom placeholder, atau dengan regex manual

Menggunakan Placeholders default

placeholders di CI 4 ini sebenernya cara mudah untuk menggunakan regex, jadi kalian tidak perlu repot-repot lagi untuk menuliskan regex jika dirasa placeholders ini sudah bisa menanganinya

terdapat 6 placeholders yang sudah disediakan oleh codeigniter 4 untuk menangani URL yang sifatnya dinamis, berikut daftar dan penjelasannya

  • (:any) berarti akan menangkap semua karakter yang ada pada url
  • (:segment) akan menangkap semua karakter kecuali karakter slash (/)
  • (:num) menangkap semua karakter angka
  • (:alpha) menangkap karakter alphabet saja
  • (:alphanum) menangkap karakter alphabet dan angka
  • (:hash) menangkap karakter hash

berikut penulisan kode menggunakan placeholders default bawaan CI 4

$routes->get('post/(:alpha)-(:alpha)-(:num)', 'Controller::method/$1');

Menggunakan Custom Placeholders

jika dirasa terdapat segment url yang tidak bisa dihandle oleh placeholders default kalian bisa membuat custom placeholders sendiri, berikut penulisan kodenya

$routes->addPlaceholder('permalink', '[a-z]-[a-z]-[0-9]{1}');
$routes->get('post/(:permalink)', 'Controller::method/$1');

Menggunakan Regex

$routes->get('post/([a-z]+)-([a-z]+)-([0-9])', 'Controller::method/$1');

Catatan : $1 ditujukan untuk membaca segment yang menggunakan regex / placeholder, jika ada 2 segment yang sifatnya dinamis tinggal diurutkan saja $1 adalah segment dinamis yang pertama, $2 adalah segment dinamis yang kedua

nah $1,$2,dan seterusnya itu buat ditaruh dicontroller, jadi nanti penulisan method pada controller menjadi
public function nama_method($segment1 = null, $segment2 = null){}

Menambahkan Filter

untuk membuat filter lebih fleksibel dalam penggunaannya kalian bisa menambahkan filter langsung dibagian route ini

berikut penulisan kode untuk menambahkan filter

$routes->get('admin', 'Controller::method', ['filter' => 'checkauth'])

Membuat Route Grouping

ketika aplikasi sudah sangat kompleks dan rumit anda pasti akan membutuhkan yang namanya grouping dibagian route, atau bisa juga untuk menggrupkan bagian yang akan difilter milsanya halaman admin

berikut penulisan route grouping

$routes->group('admin', function ($routes) {
	$routes->add('posts', 'Admin\posts::index');
	$routes->add('settings', 'Admin\settings::index');
});

penulisan route grouping dengan filter

$routes->group('admin', ['filter' => 'checkauth'] ,function ($routes) {
	$routes->add('posts', 'Admin\posts::index');
	$routes->add('settings', 'Admin\settings::index');
});

Route Closure

selain untuk menghubungkan ke-controller, route juga bisa langsung mengeksekusi program dengan menggunakan fitur closure atau anda bisa menyebutnya dengan anonymous function

berikut penulisan kode route clousure

$routes->get('/', function () {
	return view('welcome_message');
});

Kesimpulan

peran routes ini sangat penting sekali dalam sebuah aplikasi

selain untuk mendefinisikan rute URL, fungsi routes juga digunakan untuk security aplikasi karena kalian bisa melakukan filter dan memilih method http apa yang akan digunakan didalam route ini

Dilihat 1.13Kx
Terakhir diupdate 03/September/2022 02:06 AM
Buka Diskusi