author Ahmad Muhardian

Tutorial Codeigniter 4: Memahami Routing dan Controller


Codeigniter4 Controller

Routing dan Controller..

Kedua hal ini wajib kamu pahami.

Mengapa?

Karena kedua hal inilah yang menjadi ‘penggerak’ dalam aplikasi.

Pada tutorial ini, kita akan belajar seputar Routing dan Controller pada Codeigniter 4.

Pastikan kamu menyimaknya sampai selesai agar benar-benar paham.

Baiklah…

Mari kita mulai!

Apa itu Routing dan Controller?

Routing adalah proses menentukan arah atau rute yang harus dilalui.

Pada framework CI4, routing bertujuan untuk menentukan Controller mana yang harus merespon sebuah request.

Controller adalah class atau script yang bertanggung jawab merespon sebuah request.

Ia bisa saja merespon dengan mengirimkan view, data JSON, data XML, atau bahkan tidak mengirimkan respon apapun.

Karena ada juga bagian dari Controller yang hanya bertugas menerima data dan menyimpannya ke database.

Coba perhatikan lagi gambar ini:

Routes di Codeigniter

File index.php adalah file entri point yang akan dieksekusi pertama kali saat aplikasi dibuka.

Request yang diterima oleh index.php akan diserahkan ke Router. Lalu si Router akan menentukan Controller yang akan meresponnya.

Oh iya, jangan bingung dengan istilah routes, router, dan routing..

Berikut ini penjelasannya:

  • Routes adalah kumpulan definisi routing;
  • Router adalah script yang menentukan routing;
  • Routing adalah proses menentukan rute.

Lalu, bagaimana cara kita membuat Routes di Codeigniter?

Mari kita bahas:

Membuat Routes di Codeigniter

Oke, sekarang coba lihat kembali kode aplikasi ci-news.

Buka file app/config/Routes.php.

file routes

Pada file Routes.php, kita bisa mendefinisikan rute untuk aplikasi.

Coba perhatikan bagian ini:

$routes->get('/', 'Home::index');

Ini adalah rute untuk home page.

Bingung?

Coba perhatikan gambar berikut:

ci4 routes

Sudah paham?

Bagus..

Sekarang mari kita coba membuat sebuah rute baru.

Tambahkan kode berikut di dalam Routes.php:

$routes->get('/about', 'Page::about');
$routes->get('/contact', 'Page::contact');
$routes->get('/faqs', 'Page::faqs');

Nah, di sini kita membuat tiga buat rute baru. Pada rute ini kita memberikan tugas kepada controller Page untuk merespon request pada rute tersebut.

Sehingga sekarang kode routes-nya menjadi seperti ini:

page routes

Untuk memastikan rute sudah dibuat dengan benar, coba ketik perintah:

php spark routes

Jika muncul seperti ini:

php spark routes

Maka pembuatan rute berhasil.

Selanjutnya kita harus membuat Controller Page.php.

Membuat Controller

Silakan buat file baru di dalam folder app/Controllers dengan nama Page.php.

Pastikan kamu menggunakan huruf kapital di awal nama file. Karena ini sudah menjadi aturan pada Codeigniter.

Kemudian isi file Page.php dengan kode berikut:

<?php namespace App\Controllers;

class Page extends BaseController
{
	public function about()
	{
		echo "about page";
	}
    
    public function contact()
	{
		echo "contact page";
	}
    
    public function faqs()
	{
		echo "Faqs page";
	}

}

Controller Page memiliki tiga method, yakni about(), contact(), dan faqs().

Nama method ini mengikuti nama yang sudah kita tentukan di dalam rute. Jika kita menggunakan nama yang berbeda, maka ia tidak akan bisa dibuka.

Pada setiap method di Controller Page, kita membuat respon dengan perintah echo. Kita juga nanti bisa merespon dengan view.

Oke, sekarang mari kita tes hasilnya.

Silakan buka halaman berikut:

  • localhost:8080/about
  • localhost:8080/contact
  • localhost:8080/faqs

Hasilnya:

halaman about

Bagus..

Rute yang kita buat berhasil dibuka.

Autoroute di Codeigniter 4

Pada Codeigniter 3, routing dilakukan secara otomatis dengan mengikuti nama Controller dan method-nya.

Pada Codeigniter 4, kita juga bisa mengaktifkan fitur ini dengan kode:

$routes->setAutoRoute(true);

Jika ingin menonaktifkan autoroute, tinggal ganti true menjadi false.

$routes->setAutoRoute(false);

Secara default, fitur autoroute sudah aktif.

Mari kita coba..

Tambahkan method tos() pada Controller Page dengan isi seperti ini:

public function tos()
{
    echo "Halaman Term of Service";
}

Sehingga sekarang kode Controller Page menjadi seperti ini:

<?php namespace App\Controllers;

class Page extends BaseController
{
	public function about()
	{
		echo "about page";
	}
    
    public function contact()
	{
		echo "contact page";
	}
    
    public function faqs()
	{
		echo "Faqs page";
    }
    
    public function tos()
    {
        echo "Halaman Term of Service";
    }

}

Ingat:

Method tos() belum kita daftarkan di dalam Routes.php. Namun, karena kita mengaktifkan autoroute, maka method ini bisa kita akses melalui:

localhost:8080/index.php/page/tos

Hasilnya:

halaman tos

Sekarang coba matikan fitur autoroute.

Pada kode app/Config/Routes.php, berikan nilai false pada setAutoRoute().

$routes->setAutoRoute(false);

Maka sekarang method tos() tidak akan bisa dibuka.

tos 404

Ini karena kita mematikan fitur autoroute.

Sebaiknya pakai autoroute atau manual route?

Sebenarnya ini tergantung kita sebagai developer, jika tidak ingin repot-repot membuat rute maka baiknya pakai autoroute. Namun autoroute akan membuat semua method public di Controller akan bisa diakses.

Apa Selanjutnya?

Sebenarnya masih banyak lagi hal tentang routing yang harus diketahui. Namun, untuk tutorial basic.. saya cukupkan sampai di sini.

Nanti kita akan pelajari routing lebih lanjut, bersamaan dengan dengan pembahasan fitur Codeigniter lainnya.

Berikutnya kita akan belajar tentang View di Codeigniter.

Silakan lanjutkan ke:

Untuk tutorial CI lainnya, cek di 📚 List Tutorial Codeigniter