Belajar CodeIgniter 3 - Dasar Routing

Pada postingan sebelumnya saya telah memberikan sedikit ulasan tentang dasar OOP, dasar MVC, struktur direktori dan environment dari CI3. Sekarang, kita memasuki tahap routing, di mana ini adalah alur daripada aplikasi CI yang akan nantinya Anda buat. Sebelum memasuki tahap MVC. kita wajib mengetahui pengtahuan tentang dasar routing ini. Bagaimana tidak? Karena ini routing inilah tempat dimana kita menentukan default controller dan mengatur URL dari aplikasi kita.

Memulai

Untuk direktori routing ini berada pada application/config/routes.php

ci3-routing-2 Dari situ, kita akan membuat alur aplikasi CI kita. Secara default file routes.php sebagai berikut:

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

Pada bagian kode $route['default_controller'] = 'welcome'; itu menunjukan tentang default controller atau controller yang pertama kali dibaca oleh CI, default nya adalah ada pada controller welcome.

Jika Anda ingin merubah $route['default_controller'] = 'welcome' menjadi nama lain misalnya $route['default_controller'] = 'selamatdatang'. Maka Anda wajib pula merubah file di application/controllers/Welcome.php Anda rename file tersebut menjadi Selamatdatang.

ci3-routing-1 Perhatian! Dalam CI penamaan file pada controller wajib huruf awal dengan huruf kapital, dalam contoh artikel ini adalah selamatdatang, maka di tulis dengan Selamatdatang. Begitu juga dalam class nya wajib huruf awal dengan kapital.

ci3-routing-3 Kemudian untuk kode $route['404_override'] = ''; ini adalah berfungsi untuk memberi tahu CI apabila default controller tidak ditemukan atau jika ada controller lain atau halaman lain yang tidak ditemukan. Sebagai contoh:

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

ci3-routing-4

Kemudian Anda buat file di application/controllers/Galat.php dan isikan kode sebagai berikut:

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

class Galat extends CI_Controller {
    public function index()
    {
        echo "Halaman tidak ditemukan";
    }

}

Coba Anda buat sengaja meng-error-kan CI Anda, misalnya dengan memasukan URL https://localhost/ci3/index.php/error404 maka browser Anda akan menampilkan sebagai berikut:

ci3-routing-5 Kemudian untuk kode $route['translate_uri_dashes'] = FALSE; Ini adalah berfungsi jika Anda merubah nilainya menjadi TRUE, maka Anda dibolehkan dalam URL browser Anda menulis dengan tanda dash (-). Sebagai contoh Anda ingin menjadikan Controller Selamatdatang Anda menjadi selamat-datang, maka Anda ubah pada routes.php sebagai berikut:

$route['default_controller'] = 'selamat_datang';
$route['404_override'] = 'galat';
$route['translate_uri_dashes'] = TRUE;

Kemudian pada file application/controllers/Selamatdatang.php Anda rename menjadi selamat_datang.php.

ci3-routing-6 Begitu juga pada class nya Anda rubah menjadi class Selamat_datang extends CI_Controller . Pertanyaannya, mengapa harus menggunakan underscore pada nama file dan nama class controller nya? Dalam PHP nama class tidak boleh menggunakan tanda dash (-) (tanda strip dalama bahasa Indonesianya), dan ini juga berpengaruh pada penamaan file, di mana CI membaca class controller berdasarkan nama file.

Jika semua sudah dilakukan kemudian mari kita tes dengan link berikut: https://localhost/ci3/index.php/selamat-datang

ci3-routing-7 Mudah bukan?

Menghilangkan index.php

Pada kasus contoh di artikel ini, saya selalu menulisan link dengan index.php nya, misalnya tadi https://localhost/ci3/index.php/selamat-datang. Untuk memperindah atau menjadikan pretty URL halaman web kita dengan menghilangkan index.php maka perlu langkah berikut:

  1. Pastikan module mod_rewrite dalam Apache Anda sudah aktif. Dengan cara httpd -M | grep rewrite.
  2. Anda buat dahulu file .htaccess di dicretory CI Anda. Untuk pengguna Unix/Unix-like atau Linux, pastikan File Manager Anda sudah diaktifkan pengaturan show hidden file. ci3-routing-8
  3.  Kemudian masukan kode berikut pada file .htaccess:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
  4.  Pastikan pada application/config/config.php Anda kode $config['index_page'] = ''; bernilai kosong. ci3-routing-9
  5. Jika sudah langkah terakhir adalah mengtesnya misalnya: https://localhost/ci3/selamat-datang

ci3-routing-10

Kesimpulan

Routing merupakan bagian awal terpenting sebelum memulai menggunakan framework. Bagaimana tidak? Dengan adanya routing ini lah yang memberi tahu framework tentang alur aplikasi yang akan kita buat. Pada artikel ini saya memberikan sebuah routing di CI secara sederhana, ini belum semuanya tuntas karena hanya pada dasar pengetahuan saja. Insya Allah pada artikel berikutnya saya akan lebih memperjelas masalah routing ini.

Semoga bermanfaat.