Lewati ke konten utama

Controller di CodeIgniter

Controller adalah komponen utama dalam arsitektur MVC (Model-View-Controller) CodeIgniter. Controller bertugas menangani request dari user, memproses logika aplikasi, dan mengembalikan response (biasanya dalam bentuk view).


1. Lokasi Controller

Semua controller disimpan dalam folder: app/Controllers/

Setiap file controller merupakan class PHP dan harus mewarisi class CodeIgniter\Controller.


2. Contoh Controller Sederhana

<?php

namespace App\Controllers;

class Home extends BaseController
{
public function index()
{
return view('welcome_message');
}
}

Penjelasan:

  • Home adalah nama controller

  • index() adalah method default

  • view('welcome_message') memanggil file app/Views/welcome_message.php


3. Menangani Parameter

Kamu dapat menerima parameter dari URL:

public function detail($id)
{
return "ID Produk: " . $id;
}

Dengan route:

$routes->get('produk/(:num)', 'Produk::detail/$1');

Akses ke /produk/15 akan memanggil:

Produk::detail(15)

4. Controller dengan Namespace

Kamu bisa membuat subfolder untuk controller, misalnya:

app/Controllers/Admin/User.php
<?php

namespace App\Controllers\Admin;

class User extends BaseController
{
public function index()
{
return "Halaman Admin User";
}
}

Tambahkan route:

$routes->get('admin/user', 'Admin\User::index');

5. BaseController

Semua controller sebaiknya mewarisi BaseController, bukan langsung dari CodeIgniter\Controller.

class Produk extends BaseController

BaseController ada di app/Controllers/BaseController.php, dan biasanya digunakan untuk memuat helper, library, atau konfigurasi umum.

  1. Mengirim Data ke View
public function profil()
{
$data = [
'nama' => 'Budi',
'pekerjaan' => 'Programmer'
];
return view('profil', $data);
}

Di file app/Views/profil.php, kamu bisa akses:

<h1>Halo, <?= $nama ?></h1>
<p>Pekerjaan: <?= $pekerjaan ?></p>

7. Validasi Input di Controller

public function simpan()
{
$validation = \Config\Services::validation();
$validation->setRules([
'email' => 'required|valid_email'
]);

if (! $validation->withRequest($this->request)->run()) {
return redirect()->back()->withInput()->with('errors', $validation->getErrors());
}

// Simpan ke database...
}

8. Redirect dan Flashdata

Untuk redirect:

return redirect()->to('/dashboard');

Dengan flashdata:

session()->setFlashdata('pesan', 'Data berhasil disimpan.');
return redirect()->to('/produk');

Dengan controller, kamu dapat mengatur alur logika aplikasi secara fleksibel, menghubungkan model, memanggil view, serta mengelola input dan output.