+6281 911 911 301

Penerapan URL Routing pada Framework Codeigniter

URL routing (route) adalah salah satu metode yang digunakan untuk memetakan URL ke dalam sumber daya tertentu dengan memberikan nama lain dari alamat sumber daya yang dimaksud. URL routing sering digunakan untuk beberapa hal berikut:

  1. Menjadikan URL sumber daya yang sulit dibaca manusia dengan membuatkan pemetaan baru ke URL alias dari route yang lebih mudah dibaca manusia.
  2. Membuat URL sumber daya menjadi lebih pendek dengan memberikan penamaan routing yang lebih pendek.
  3. Memantau agar URL sesuai dengan format yang diinginkan dengan memanfaatkan fungsi regeluar expression (regex).

Setelah memahami routing dalam kaitannya dengan website, maka selanjutnya akan dibahas mengenai penerapan routing pada Codeigniter. Codeigniter adalah salah satu framework PHP yang didesain untuk memudahkan para developer website dalam membuat website yang cepat, aman, dan mudah untuk dikonfigurasi.

Untuk membuat routing pada Codeigniter, anda harus membuka beberapa file yang nantinya file tersebut akan anda pakai dalam konfigurasi route dari website anda. Langkah pertama yaitu dengan membuka file routes.php pada direktori application/config/. Setelah membuka file tersebut maka anda akan melihat bait program kurang lebih seperti berikut:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');
$route['default_controller'] = 'HomeControl';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

Sebelum saya lanjutkan ke bagian konfigurasi route, saya akan jelaskan fungsi dari beberapa baris code di atas.

  1. $route['default_controller' digunakan untuk mengatur controller mana yang akan digunakan sebagai controller default pada website Pada bagian ini saya menggunakan controller yang saya beri nama HomeControl.
  2. $route['404_override'] digunakan untuk anda yang ingin mengatur tampilan jika halaman tidak ditemukan (error 404) dan secara standar bagian ini akan dikosongkan. Jika bagian ini kosong maka setiap halaman yang tidak ditemukan akan dibawa ke halaman standar error 404 yang dimiliki CI. Untuk mengatur agar bisa memakai halaman yang telah anda siapkan untuk menghendel error 404 maka anda dapat menambahkan nama controller dan diikuti function yang dirujuk pada controller
  3. $route['translate_uri_dashes'] digunakan untuk melakukan otomatis replace karakter dashes ( - ) dengan undescores ( _ ) pada controller dan uri segment. Anda dapat mengaktifkan fungsi ini dengan mengganti FALSE menjadi TRUE jika anda membutuhkan fungsi tersebut.

Selanjutnya saya akan melanjutkan materi ke penerapan route pada Codeigniter dengan disertakan contoh dari masing-masing kasus.

Kasus 1 Penerapan Dasar

Penerapan route yang pertama yaitu penerapan route yang paling sederhana. Pada bagian ini saya akan membuat route untuk menampilkan halaman profil, perhatikan code berikut:
$route['profil'] = 'HomeControl/view_profil';

Dari code di atas saya akan jelaskan secara mendetail agar anda bisa mengerti dengan mudah dari penerapan route pada Codeigniter ini. $route['profil'] adalah rute baru yang menuju ke function view_profile pada HomeControl.

Dari penjelasan di atas maka format dari pembuatan route yaitu:

$route['nama-rute-baru'] = 'NamaController/nama_function';


Kemudian untuk mendukung dari penerapan route di atas, berikut isi HomeControl dalam mengakses function view_profil.

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

class HomeControl extends CI_Controller 
{
  function view_profil()
  {
    $this->load->view('profil');
  }
}

Kasus 2 Penerapan Route dengan Variabel

Dalam beberapa kasus, sering kali kita mengirimkan variabel entah itu berupa id dan lain sebagainya melalui URL. Pada bagian ini saya akan menjelaskan cara untuk membuat route dengan disertakan variabel.

Dalam hal ini ada beberapa dasar yang perlu diingat kembali yaitu di dalam pengiriman variabel melalui URL, variabel yang di kirimkan dapat berupa angka, huruf, dan karakter lain. Di dalam Codeigniter, terdapat fasilitas yang dapat memudahkan kita untuk membatasi variabel yang diizinkan dalam route.

Pada route Codeigniter kita akan mengenal (:num), (:any), dan karakter lain yang berupa regex. Berikut penjelasannya:

  • (:num) atau number digunakan untuk menentukan segment yang bersangkutan berupa number (angka).
  • (:any) atau semua digunakan untuk menentukan segment yang bersangkutan berupa semua karakter (angka, huruf, spesial karakter yang diizinkan dalam URL).
  • Karakter regular expression untuk menentukan segment yang bersangkutan hanya berupa karakter yang sesuai dengan regex yang dimaksud.

Selanjutnya akan saya lanjutkan ke penerapan dari route dengan menggunakan variabel yang dikirimkan melalui URL.

Penggunaan (:num) dan (:any)

Dalam kasus ini saya akan memberikan contoh kasus dengan dua contoh penggunaan secara langsung yaitu (:num) dan (:any). Hasil akhir URL yang ditampilkan yaitu:

http://www.domain.com/produk/1/nama-produk-1

Untuk penulisan dalam route dari URL di atas yaitu:

$route['produk/(:num)/(:any)'] = 'HomeControl/detail_produk/$1/$2';

$1 dan $2 dalam rute yang dibuat menandakan pengambilan variabel dimana $1 untuk (:num) dan $2 untuk (:any). Jika dalam kasus ini anda hanya ingin menggunakan satu variabel saja sebagai parameter dalam function di controller maka anda dapat menghilangkan salah satu dari $1 atau $2. Seperti contoh saya hanya akan menggunakan id_produk untuk fungsi detail produk, maka codenya seperti berikut:

$route['produk/(:num)/(:any)'] = 'HomeControl/detail_produk/$1';

Kemudian pemanggilan dalam controller seperti berikut:

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

class HomeControl extends CI_Controller 
{
  function view_profil()
  {
    $this->load->view('profil');
  }

  function detail_produk($id_produk)
  {
    $this->load->model('ProdukModel');
    $data['produk'] = $this->ProdukModel->getProdukById($id_produk);
    $this->load->view('detail_produk',$data);
  }
}

$id_produk pada function detail_produk di dapat dari pengiriman variabel $1 dari route yang dibuat.

Penggunaan Regular Expression

Penerapan regex pada route codeigniter hampir sama dengan penggunaan (:num) dan (:any) yang menjadi pembeda yaitu hanya karakter yang bisa diterima oleh route untuk bisa mengakses function pada controller. Contoh penerapannya sebagai berikut:

$route['produk/(:num)/([a-z]+)'] = 'HomeControl/detail_produk/$1';

Pada bagian ini penggunaan regex untuk membatasi nama produk, dimana hanya berupa karakter a sampai z saja dengan huruf kecil.

 

Demikian artikel tentang penerapan dari URL routing pada framework Codeigniter, semoga artikel ini dapat membantu anda dalam belajar Codeigniter.



Artikel Terkait

Dasar Membuat Web dengan Codeigniter
Dipublikasikan
6 Nov 2017

Dasar yang Perlu Diketahui Saat Membuat Web dengan Codeigniter

Artikel ini menjelaskan tentang aturan dasar ketika belajar web dengan menggunakan framework Codeigniter.
Membuat Templit HTML pada Framework Codeigniter
Dipublikasikan
8 Oct 2017

Membuat Templit HTML pada Framework Codeigniter

Membuat templit html pada CodeIgniter akan mempersimpel coding website anda dan sekaligus mempermudah anda dalam memanajemen halaman.
Redirect SSL pada Codeigniter dengan Hooks
Dipublikasikan
2 Oct 2017

Cara Redirect SSL pada Codeigniter dengan Hooks

Anda pengguna framework codeigniter dan saat ini kebingungan untuk redirect SSL, anda dapat membaca artikel ini.
Htaccess redirect 301 pada Codeigniter
Dipublikasikan
2 Oct 2017

Htaccess Redirect 301 pada Codeigniter

Anda mendapat error 301 dari aplikasi SEO yang anda gunakan, anda dapat menggunakan cara ini untuk mengatasinya.
Fungsi index.html pada Folder Codeigniter
Dipublikasikan
29 Oct 2017

Fungsi index.html pada Folder Codeigniter

Artikel ini menjelaskan tujuan dari penggunaan index.html pada setiap folder di Framework Codeigniter
Pengenalan Codeigniter
Dipublikasikan
6 Oct 2017

Pengenalan Codeigniter dari Struktur Folder, Fungsi, dan Instalasinya

Artikel ini ditujukan untuk anda yang baru saja memplajari Codeigniter, dimana artikel ini akan membahas struktur folder, fungsi, dan instalasinya.