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:

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:

ci3-routing-4

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

Coba Anda buat sengaja meng-error-kan CI Anda, misalnya dengan memasukan URL http://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:

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: http://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 http://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:
  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: http://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.

Ayo Berlangganan!

Dapatkan pemberitahuan artikel-artikel terbaru super cepat, langsung dari surel Anda.
Lebih dari 320 telah berlangganan situsali.com, ayo segera daftarkan surel Anda sekarang juga!


17 thoughts on “Belajar CodeIgniter 3 – Dasar Routing”

  1. bang ali, mungkin ada perbedaan nama pada apache? punya saya rewrite_module kalo status (shared) berarti udah on kan?saya cek d console httpd -M

    1. Ya kalau di Archlinux cara mengeceknya seperti itu httpd -M | grep rewrite dan hasilnya akan rewrite_module (shared). Itu artinya sudah aktif. Kalau di distro lain misalnya Ubuntu cara ceknya yakni lihat di ls -l /etc/apache2/mods-enabled

  2. Mas saya ada 2 pertanyaan nih,
    1. Seberapa penting menggunakan route di CI ? setahu saya route di CI gak wajib ya? beda banget sama Laravel yg memang mengharuskan routingnya dibikin di tiap page/proses yang kita buat. Bener gak begitu?
    2. Saya menggunakan NGINX, bagaimana caranya menghilangkan “index.php” ?

    Terimakasih mas

      1. Seberapa penting. Sangat penting untuk membuat spesifik Link dan perbedaan nama antara URL dengan nama controllernya. Contoh:
        $route['product/:num'] = 'catalog/product_lookup';
        Kode tersebut mangharuskan menggunakan angka, juga nama class pada controllernya berbeda dengan URL routing.

      2. Tambahkan:
        location / {
        try_files $uri $uri/ /index.php?$query_string;
        }

  3. Mau nanya min, url halaman saya : localhost/spk/alternatif
    didalam halama alternatif ada link untuk menambah data alternatif
    biar url nya jadi : localhost/spk/alternatif/tambah itu gimana ya min?

Leave a Reply