BAB 4 – Controller: Mengendalikan Aplikasi CodeIgniter Anda

BAB 4 – Controller: Mengendalikan Aplikasi CodeIgniter Anda

Setelah memahami struktur folder dan file CodeIgniter, saatnya kita masuk ke jantung logika aplikasi: Controller.

Controller adalah penghubung antara request dari user, model (data), dan view (tampilan). Tanpa controller, aplikasi tidak tahu harus melakukan apa ketika pengguna mengakses URL tertentu.

Pada BAB ini, kita akan membahas:

  • Pengertian controller
  • Membuat controller pertama
  • Method pada controller
  • Routing dasar
  • Mengirim data dari controller ke view

Tujuan Pembelajaran

Setelah menyelesaikan BAB 4, Anda akan mampu:

  1. Memahami fungsi controller dalam CodeIgniter
  2. Membuat controller pertama
  3. Membuat method dalam controller
  4. Mengatur routing dasar
  5. Mengirim data dari controller ke view

4.1 Pengertian Controller

Controller adalah “otak” aplikasi yang:

  • Menerima request dari user
  • Memproses logika aplikasi
  • Memanggil model untuk mengambil data
  • Mengirim data ke view untuk ditampilkan

Secara sederhana:

Browser → Controller → Model → Controller → View → Browser

📌 Catatan:
Controller tidak boleh memuat logika database atau tampilan secara langsung. Gunakan model dan view untuk memisahkan tugas (prinsip MVC).


4.2 Membuat Controller Pertama

4.2.1 CodeIgniter 3

Buat file baru:

application/controllers/Halo.php

Isi file:

<?php
class Halo extends CI_Controller {
    public function index() {
        echo "Halo, CodeIgniter 3!";
    }
}

Akses di browser:

http://localhost/ci3/index.php/halo

4.2.2 CodeIgniter 4

Buat file baru:

app/Controllers/Halo.php

Isi file:

<?php
namespace App\Controllers;

class Halo extends BaseController {
    public function index() {
        return "Halo, CodeIgniter 4!";
    }
}

Akses:

http://localhost/ci4/public/halo

📌 Catatan:

  • Nama class harus sesuai nama file
  • BaseController berisi fungsi bawaan dan helper default

4.3 Method pada Controller

Method adalah fungsi di dalam controller yang menentukan aksi tertentu.

Contoh Method CI 3

class Halo extends CI_Controller {
    public function index() {
        echo "Ini halaman index";
    }
    public function tentang() {
        echo "Ini halaman tentang";
    }
}

Akses:

http://localhost/ci3/index.php/halo/index
http://localhost/ci3/index.php/halo/tentang

Contoh Method CI 4

class Halo extends BaseController {
    public function index() {
        return "Halaman index CI 4";
    }
    public function tentang() {
        return "Halaman tentang CI 4";
    }
}

📌 Tips:

  • Method default biasanya index()
  • Gunakan nama method deskriptif agar URL lebih mudah dimengerti

4.4 Routing Dasar

Routing adalah cara CodeIgniter menghubungkan URL dengan controller dan method.

4.4.1 Routing CI 3

Buka:

application/config/routes.php

Contoh routing:

$route['default_controller'] = 'halo';
$route['tentang'] = 'halo/tentang';
  • URL http://localhost/ci3 → otomatis menuju Halo::index
  • URL http://localhost/ci3/tentang → menuju Halo::tentang

4.4.2 Routing CI 4

Buka:

app/Config/Routes.php

Contoh routing:

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

📌 Catatan:
Routing membuat URL lebih SEO-friendly dan mudah diingat.


4.5 Mengirim Data dari Controller ke View

Seringkali kita perlu mengirim data ke view agar bisa ditampilkan di halaman web.

4.5.1 CI 3

Buat file view:

application/views/halo_view.php

Isi file:

<h1>Halo, <?= $nama; ?>!</h1>

Controller:

class Halo extends CI_Controller {
    public function index() {
        $data['nama'] = "CodeIgniter 3";
        $this->load->view('halo_view', $data);
    }
}

Akses:

http://localhost/ci3/index.php/halo

4.5.2 CI 4

Buat file view:

app/Views/halo_view.php

Isi file:

<h1>Halo, <?= $nama; ?>!</h1>

Controller:

class Halo extends BaseController {
    public function index() {
        $data['nama'] = "CodeIgniter 4";
        return view('halo_view', $data);
    }
}

Penutup

Controller adalah inti dari alur aplikasi. Dengan controller:

  • Aplikasi bisa merespon URL tertentu
  • Data bisa dikirim ke view dengan rapi
  • Logika aplikasi tetap terstruktur

Pada BAB selanjutnya, kita akan membahas Model, agar controller bisa mengambil data dari database dengan aman dan efisien.