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 fileapp/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.
- 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.