Controller Di Codeigniter 4

Tutorial ini akan membahas bagaimana penggunaan controller di codeigniter 4.

Apa itu Controller?

Untuk framework dengan konsep MVC seperti Codeigniter.Controller sendiri adalah yang bertugas memproses request yang datang dari user baik dari browser atau lainnya melalui URL, dimana Controller biasanya mengambil data dan informasi melalui Model atau sumber lainnya. Kemudian Controller menampilkan hasil prosesnya ke dalam View sebagai response dari request user.

Sebagai contoh di Codeigniter 4 ketika kita mengakses url seperti dibawah ini misalnya:

example.com/helloworld/

Codeigniter akan mencari controller dengan nama Helloworld.php tersebut kemudian menjalankannya.Secara default juga kalau kita menjalankan seperti url diatas fungsi yang dipanggil adalah index.Jadi sama halnya jika kita mengakses dengan example.com/helloworld/index

Membuat Controller

Sebagai contoh kita akan buat controller Helloworld,buat file bernama Helloworld.php di folder app/Controllers.Lalu isi dengan kode dibawah ini.

<?php namespace App\Controllers;

use CodeIgniter\Controller;

class Helloworld extends Controller
{
    public function index()
    {
        echo 'Hello World!';
    }
}

Pastikan nama depan controller wajib huruf kapital karena sudah aturan Codeigniter

Kemudian coba jalankan di browser dengan url seperti dibawah ini.

localhost:8080/helloworld

Jika tidak ada yang salah harusnya keluar seperti dibawah ini.

Hello World!

Nama class sendiri diwajibkan diawali dengan kapital dan hanya awal karakter yang huruf kapital

Contoh :

Ini Boleh

<?php namespace App\Controllers;

use CodeIgniter\Controller;

class Helloworld extends Controller
{
    public function index()
    {
        echo 'Hello World!';
    }
}

Tidak Boleh

<?php namespace App\Controllers;

use CodeIgniter\Controller;

class helloworld extends Controller
{
    public function index()
    {
        echo 'Hello World!';
    }
}

Tidak Boleh

<?php namespace App\Controllers;

use CodeIgniter\Controller;

class HelloWorld extends Controller
{
    public function index()
    {
        echo 'Hello World!';
    }
}

Hal ini terjadi karena secara default Codeigniter akan mencocokan Controller dengan isi dari app/Controllers ,jika kita tidak mendeklarasikan di routes,untuk routes sendiri akan ada dimateri berikutnya.Itulah kenapa ada aturan harus diawali dengan huruf kapital dan sisanya tidak.Jika tidak ingin mengikuti aturan boleh saja tapi harus mendeklarasikan secara manual di app\Config\Routes.php.

Contohnya :

$routes->get('helloworld', 'App\Controllers\HelloWorld::index');

di routes diatas kita membuat nama class di controller HelloWorld yang tidak sesuai aturan Codeigniter.

Membuat Method di Controller

Sesuai contoh sebelumnya saat membuat Controller,kita sudah menggunakan method yaitu index(), index method selalu dipanggil secara default walaupun di url kita tidak memanggilnya.Contohnya seperti dibawah ini.

localhost:8080/helloworld

Sama dengan

localhost:8080/helloworld/index

Segment kedua dari url itu merupakan method yang dipanggil dari controller.Jika ada yang belum paham apa pembagian segment di url,akan saya jelaskan sedikit.

Misalnya URL : example.com/helloworld/index

Nama Domain kita adalah example.com

Segment 1 adalah helloworld

Segment 2 adalah index

Untuk segment3,segment4 dan seterusnya biasa sudah bagian dari parameter dari method.

Kemudian kita akan coba tambahkan method baru ke controller Helloworld sebelumnya,sehingga menjadi seperti dibawah ini.

<?php namespace App\Controllers;
use CodeIgniter\Controller;

class Helloworld extends Controller
{
    public function index()
    {
        echo 'Hello World!';
    }

    public function medan()
    {
        echo 'I am from medan';
    }
}

Kemudian coba jalankan kembali dan akses url : localhost:8080/helloworld/medan.Maka akan keluar hasil

I am from medan
Parameter di Method

Seperti saya bahas sedikit diatas tadi segment yang lebih dari dua akan dianggap parameter.

Misalnya kita punya URL seperti dibawah ini.

localhost:8080/helloworld/kota/medan

Method kita akan membaca medan sebagai parameter,itu karena medan merupakan segment 3.

<?php namespace App\Controllers;
use CodeIgniter\Controller;

class Helloworld extends Controller
{
    public function index()
    {
        echo 'Hello World!';
    }

    public function medan()
    {
        echo 'I am from medan';
    }
    public function kota($kota){
		echo 'I am from '.$kota;
	}
}

Untuk nama parameter di method kota itu namanya terserah kita yang penting mengikuti aturan penamaan variabel di php.Kalau kita jalankan kembali dan panggil sesuai url diatas,maka akan keluar seperti dibawah ini.

I am from medan

Sekian untuk pembahasan mengenai controller jika ada yang kurang dipahami ,silahkan bertanya.

Materi selanjutnya adalah Route di Codeigniter 4