Image Load

Hello world,

Routes adalah penghubung antara user yang melakukan request dengan menggunakan URL yang kemudian diterjemahkan oleh routes dengan mengarahkan URL kepada Controller yang terlah didefinisikan sebelumnya. Pada codeigniter memiliki routing standar yang isinya adalah seperti di bawah ini. Dengan contoh routing standar di bawah ini maka kita tidak perlu mengatur apapun pada routing website kita jika memang nama class dan fuction sama persis dengan yang ada pada susunan URL. Jumlah param juga bisa lebih dari satu yang dipisahkan dengan garis miring "/".

domain.com/class/function/param

Untuk mengatur routing website codeigniter kita perlu membuka file application/config/routes.php yang isinya seperti berikut.

$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

Pada standarnya kita diberikan tiga route yaitu default_controller yang merupakan controller pertama yang dipanggil jika halaman/url utama website diakses. Kemudian ada 404_override jika kita ingin mengganti desain dari halaman error 404.  Kemudian ada translate_uri_dashes yang merupakan  opsi yang memungkinkan kita untuk mengganti tanda hubung (‘-‘) secara otomatis dengan garis bawah (_) pada URI, sehingga menghemat jumlah route tambahan jika diperlukan. Ini diperlukan, karena tanda hubung bukan karakter class atau nama method yang valid dan akan menyebabkan kesalahan fatal jika kita mencoba menggunakannya.

Pada kasus yang biasanya terjadi penamaan url tidak membutuhkan pengaturan pada routes.php. Contoh jika kita memiliki Controller seperti berikut:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Blog extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->helper('url');
}    
public function index()    
{
$this->load->view('header');
$this->load->view('home');
$this->load->view('footer');
}

public function detail($slug)
{
$this->load->view('header');
$this->load->view('detail');
$this->load->view('footer');
}
}

Pada kasus ini untuk memanggil class Blog dan method index maka urlnya menjadi

domain.com/blog. 

lalu untuk memanggil method detail urlnya menjadi

domain.com/blog/detail/slug-berita. 

Lalu bagaimana jika kita ingin membuat url yang lebih ringkas seperti contohnya pada website saya url yang merupakan list blog ada pada url :

https://www.byriza.com/code/, 

Sedangkan untuk detail blognya ada pada url:

https://www.byriza.com/codeigniter-4-controller-views-membuat-halaman-statis-part-2

Pada kasus ini url detail blognya saya ubah dari domain.com/code/detail/slug-berita menjadi domain.com/slug-berita. Agar dapat berjalan maka kita harus mengatur dimana domain.com/slug-berita harus diarahkan ke class code dan method detail. Caranya tambahkan code berikut ke dalam file routes.php :

$route['(:any)'] = 'code/detail/$1';

Penjelasan :

(:any) artinya semua bentuk string pada url akan dianggap sebagai param.

code adalah nama Class

detail adalah nama Method

$1 adalah param yang merupakan (:any) tadi,

Dengan begini maka url detail berita sudah berhasil diarahkan ke method detail. Akan tetapi yang perlu diperhatikan adalah semua url akan mengarah ke method tersebut. Kenapa? karena route utama + (:any) akan mengarah ke sana semua. Lalu bagaimana untuk halaman-halaman yang lain? Untuk halaman lain kita harus buat juga routes-nya. Contohnya seperti berikut.

$route['home'] = 'home';
$route['about'] = 'about';
$route['blog'] = 'code';
$route['(:any)'] = 'blog/detail/$1';

$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;


Semoga saja penjelasannya gak bikin bingung ya.. Selamat mencoba :)