Controllers


Controllers dapat diumpakan sebagai hati untuk aplikasi yang anda buat. Karena Controller ini lah yang menentukan bagaimana HTTP request itu ditangani. Misalnya terdapat sebuat URI.

localhost/[nama_direktori_codeigniter_anda]/artikel/

Pada contoh diatas, Codeigniter akan berusaha untuk menemukan controller dengan nama artikel.php dan kemudian meloadnya.

Mari kita coba membuat sebuah controller sederhana menggunakan text editor. Buat sebuah file dengan nama helloworld.php, dan masukkan kode berikut didalamnya:


<?php
class HelloWorld extends CI_Controller
{
function __construct()
{
parent::__construct();
}

function index()
{
echo 'Hello World';
}
}
?>

Kemudian simpan kedalam folder application/controllers/.

Sekarang pada browser ketikkan URL seperti ini:

localhost/[nama_direktori_codeigniter_anda]/index.php/HelloWorld

Jika benar, anda akan melihat tulisan Hello World.

Catatan : Nama sebuah class harus diawali dengan huruf besar.

Functions

Pada contoh diatas terdapat fungsi dengan nama index(). Fungsi index() akan selalau diload secara default jika parameter kedua pada URI kosong. Cara lainnya untuk menampilkan pesan “Hello World” seperti ini:

localhost/[nama_direktori_codeigniter_anda]/index.php/HelloWorld/index/

Melewatkan URI Segment ke dalam Fungsi

Jika URI anda berisi lebih dari dua segment yang akan dilewatkan kedalam fungsi sebagai parameter, sebagai contoh URI anda seperti ini:

localhost/[nama_direktori_codeigniter_anda]/products/shoes/sandals/123

Fungsi yang anda buat akan melewatkan URI Segments 3 dan 4 (“sandals” dan “123”):


<?php
class Products extends CI_Controller
{
function __construct()
{
parent::__construct();
}

function shoes($sandals, $id)
{
echo $sandals;
echo $id;
}
}
?>

Sekarang pada browser ketikkan URL seperti ini:

http://localhost/[nama_direktori_codeigniter_anda]/index.php/products/shoes/sandals/123

Jika benar, anda akan melihat tulisan sandals123.

Private Functions

Dalam beberapa kasus mungkin anda ingin beberapa fungsi disembunyikan dari public access. Untuk membuat fungsi private, anda hanya menambahkan underscore didepan nama function. Sebagai contoh, coba anda tambahkan underscore pada skrip sebelumnya, sehingga menjadi seperti ini:


<?php
class _Products extends CI_Controller
{
function __construct()
{
parent::__construct();
}

function shoes($sandals, $id)
{
echo $sandals;
echo $id;
}
}
?>

Kemudian pada browser ketikkan URL seperti ini:

http://localhost/[nama_direktori_codeigniter_anda]/index.php/products/shoes/sandals/123

atau

http://localhost/[nama_direktori_codeigniter_anda]/index.php/_products/shoes/sandals/123

Hasilnya, halaman tidak ditemukan.