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
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
.
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.
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;
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:
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
.
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
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:
- Pastikan module mod_rewrite dalam Apache Anda sudah aktif. Dengan cara
httpd -M | grep rewrite
. - 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. - Kemudian masukan kode berikut pada file
.htaccess
:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L]
- Pastikan pada
application/config/config.php
Anda kode$config['index_page'] = ''
; bernilai kosong. - Jika sudah langkah terakhir adalah mengtesnya misalnya: https://localhost/ci3/selamat-datang
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.