Plugin
Plugin pada dasarnya hampir sama dengan helper. Perbedaan utama antara plugindan helper terletak pada jumlah fungsi. Sebuah helper dapat terdiri dari beberapa fungsi, sedangkan sebuah plugin hanya mengandung satu buah fungsi. Helper juga biasanya dianggap sebagai bagian dari system utama dan dibuat oleh Tim pengembang CodeIgniter, sedangkan plugin dimaksudan untuk dibuat dan disebarkan oleh komunitas.
Tata cara penggunaan plugin juga sama dengan cara penggunaan helper, dimana untuk dapat menggunakan plugin dapat dilakukan dengan cara konfigurasi pada fileautoload.php atau melakukan proses loading pada setiap controller yang akan menggunakan plugin. Konfigurasi pada autoload.php adalah sebagai berikut:
$autoload['plugin'] = array(‘captcha’, ‘js_calendar’);
Untuk melakukan loading pada setiap controller yang akan menggunakan plugin,dilakukan dengan sintak sebagai berikut:
$this->load->plugin(‘namaplugin’);
Namaplugin diambil dari nama file plugin, dikurangi ekstensi .php dan _pi. Contoh apabila kita ingin me-load file captcha_pi.php, maka sintaknya adalah sebagai berikut:
$this->load->plugin(‘captcha’);
Helper
Helper pada dasarnya tidak berbeda dengan library yaitu berguna untuk membantu pengembang membangun aplikasi secara lebih cepat dan efisien. Yang membedakan antara helper dengan library terletak pada format penulisannya. Kalaulibrary dibuat dengan format object oriented, sedangkan helper dibuat dengan format bahasa prosedural. Setiap helper bisa terdiri dari beberapa fungsi, dimana setiap fungsi dari helper melakukan satu pekerjaan yang spesifik tanpa ada ketergantungan terhadap fungsi yang lain.
Beberapa contoh helper diantaranya adalah URL helper yang membantu dalam pembuatan link, form helper yang membantu untuk membuat element-element form, text helper yang membantu untuk pekerjaan memformat text, Cookie helper yang membantu untuk penanganan cookies, File helper yang membantu untuk bekerja dengan file, dan sebagainya.
Helper biasanya disimpan dalam folder system/helpers, atau di dalam foldersystem/application/helpers. CodeIgniter akan terlebih dulu mencari helper di dalam folder system/application/helpers, jika helper yang dicari tidak ditemukan pada folder tersebut, baru kemudian dicari pada folder system/helpers.
Sama seperti halnya library, untuk menggunakan helper dapat dilakukan dengan dua cara yaitu melalui konfigurasi pada file autoload.php atau dengan melakukan prosesloading pada setiap controller yang akan menggunakan helper. Konfigurasi pada fileautoload.php untuk melakukan proses autoloading terhadap helper-helper yang akan kita gunakan adalah sebagai berikut:
$autoload['helper'] = array(‘url’,’html’,’form’,’date’);
Untuk melakukan loading pada setiap controller yang akan menggunakan helper,dilakukan dengan sintak sebagai berikut:
$this->load->helper(‘namahelper’);
Namahelper diambil dari nama file helper, dikurangi ekstensi .php dan _helper. Contoh apabila kita ingin me-load file html_helper.php, maka sintaknya adalah sebagai berikut:
$this->load->helper(‘html’);
Library
Library adalah sekumpulan kelas dan fungsi yang dibuat untuk membantu pengembang aplikasi untuk dapat membangun aplikasi dengan lebih cepat dan lebih efisien. Beberapa kelas sangat dibutuhkan dan hampir selalu digunakan setiap kita membangun aplikasi web, sedemikian sehingga kelas-kelas tersebut selalu kita atur supaya secara otomatis di-load oleh sistem dan dapat langsung digunakan. Contoh library yang hampir selalu digunakan dalam suatu web dinamis diantaranya adalah library database, session, input dan security.
Di dalam CodeIgniter, library terbagi menjadi dua macam, yaitu library yang bersifat global dan library yang kita buat sendiri sesuai dengan kebutuhan. Library global terdiri dari kelas dan fungsi-fungsi yang telah disediakan oleh CodeIgniter, dan terletak pada folder system/libraries. Sedangkan library yang kita buat sendiri sesuai dengan kebutuhan ditempatkan pada folder application/libraries.
Beberapa library yang wajib diketahui oleh setiap pengembang diantaranya adalah:
Di dalam CodeIgniter, library terbagi menjadi dua macam, yaitu library yang bersifat global dan library yang kita buat sendiri sesuai dengan kebutuhan. Library global terdiri dari kelas dan fungsi-fungsi yang telah disediakan oleh CodeIgniter, dan terletak pada folder system/libraries. Sedangkan library yang kita buat sendiri sesuai dengan kebutuhan ditempatkan pada folder application/libraries.
Beberapa library yang wajib diketahui oleh setiap pengembang diantaranya adalah:
- Database, library ini menyediakan serangkaian fungsi-fungsi yang digunakan untuk mengakses database dan melakukan pengolahan data yang ada di dalam database.
- Input, library ini merupakan library yang digunakan untuk menangani dan memproses data-data yang berasal dari form. Misalkan apabila kita menggunakan form untuk memasukkan data maka library ini harus di-load supaya kita dapat melakukan pemrosesan data form.
- File Uploading, library ini merupakan library yang digunakan apabila kita akan membangun web yang dapat mengunggah (upload) file ke dalam web. Misalkan kita menginginkan supaya di dalam web kita ada fitur yang dapat digunakan untuk memasukkan file gambar ke dalam aplikasi web kita, maka digunakanlah library ini.
- Session, library ini merupakan library yang digunakan untuk memelihara informasi status mengenai pengguna. Sebagai contoh misalkan kita membangun suatu website dimana pengunjung website tersebut harus melakukan proses login terlebih dahulu untuk masuk ke dalam suatu halaman, maka pada situasi seperti ini, library session harus di-load supaya kita dapat memelihara state dari pengunjung, sampai pengunjung tersebut logout.
- URI Class, library ini berisi fungsi-fungsi yang membantu kita untuk mendapatkan informasi dari URI pada alamat web kita.
- Validation, library ini digunakan untuk melakukan validasi terhadap form input yang ada pada aplikasi web kita.
- Pagination, library ini berguna pada saat kita memiliki banyak data yang harus ditampilkan. Misalkan kita memiliki 100 data, dimana ke-100 data ini akan ditampilkan ke dalam 10 halaman (10 data / halaman). Untuk membuat 10 halaman yang masing-masing memuat 10 data dan masing-masing halaman terhubung satu sama lain, maka pagination merupakan library yang tepat untuk digunakan.
Ada banyak lagi sebenarnya library yang dapat digunakan pada CodeIgniter, baik itu library bawaan dari CodeIgniter maupun library pihak ketiga yang cocok digunakan pada CodeIgniter. Tetapi untuk tahap awal library yang baru saja dijelaskan merupakan library yang wajib diketahui karena banyak digunakan. Untuk penjelasan lebih lanjut mengenai penggunaan library dalam CodeIgniter, akan dijelaskan pada saat membahas pengembangan website.
Untuk menggunakan library yang ada pada folder system/libraries, ada dua cara yang dapat dilakukan. Cara pertama adalah dengan cara mengatur supaya library yang kita inginkan secara otomatis dapat digunakan. Cara ini dilakukan melalui pengaturan pada file system/config/autoload.php, sebagai berikut:
$autoload['libraries'] = array(‘database’,’input’,’upload’,’URI’);
Untuk menggunakan library yang ada pada folder system/libraries, ada dua cara yang dapat dilakukan. Cara pertama adalah dengan cara mengatur supaya library yang kita inginkan secara otomatis dapat digunakan. Cara ini dilakukan melalui pengaturan pada file system/config/autoload.php, sebagai berikut:
$autoload['libraries'] = array(‘database’,’input’,’upload’,’URI’);
Cara kedua adalah dengan melakukan loading terhadap library yang kita inginkan pada controller dimana library ini akan digunakan. Biasanya library ini di-load pada konstruktor dari controller yang bersangkutan. Berikut sintaknya:
$this->load->library(‘namalibrary’);
Model
Model adalah komponen CodeIgniter yang dirancang untuk bekerja dengan informasi dalam database. Melalui model kita bisa membuat fungsi-fungsi yang dapat mengambil (retrieve), memasukkan (insert), menghapus (delete), maupun memutakhirkan (update) data.
Model dibuat dengan format sebagai berikut:
<? php class Nama_model extends Model {
function Nama_model()
{
parent::Model();
}
function nama_fungsi()
{
{
parent::Model();
}
function nama_fungsi()
{
}
} ?>
} ?>
Nama_model merupakan nama dari class yang kita buat. Nama dari class untuk model harus diawali dengan huruf capital. Pastikan bahwa setiap kita membuat class model, kita melakukan ‘extends’ terhadap class dasar dari Model. Nama konstruktor juga sama dengan nama dari class. Untuk nama fungsi biasanya diawali dengan huruf kecil.
File-file model yang kita buat, harus disimpan di dalam folder application/models. File-file ini seperti biasa disimpan dengan ekstensi .php, dimana nama file sama dengan nama class, tetapi semuanya menggunakan huruf kecil. Untuk contoh model yang kita buat, maka file dari model disimpan sebagai berikut:
application/models/nama_model.php
Fungsi-fungsi dalam model, dapat kita gunakan setelah kita melakukan prosesloading terhadap model yang telah kita buat. Proses loading ini dilakukan di dalamcontroller, sesuai dengan fungsi controller sebagai penghubung diantara komponen-komponen CodeIgniter. Sebaiknya model di-load di dalam konstruktor dari controller.Tujuannya supaya sekali di-load, semua fungsi yang ada di dalam controller dapat menggunakan model tersebut tanpa harus melakukan loading di setiap fungsi. Berikut sintak untuk melakukan loading suatu model:
$this->load->model(‘nama_model’);
Apabila model yang akan kita load berada pada folder tertentu, maka sintaknya:
$this->load->model(‘nama_folder/nama_model’);
Setelah model di-load, maka kita dapat mengakses fungsi-fungsi yang ada pada model dengan menggunakan sintak sebagai berikut:
$this->nama_model->nama_fungsi();
Selengkapnya penggunaan model, view, dan controller secara bersamaan dapat dijelaskan melalui sintak controller berikut ini:
<?php
class Test extends Controller {
class Test extends Controller {
function test() //constructor
{
parent::Controller();
$this->load->model(‘nama_model’);
}
function index()
{
$data = $this->nama_model->fungsi();
$this->load->view(‘testview’, $data);
}
}
?>
{
parent::Controller();
$this->load->model(‘nama_model’);
}
function index()
{
$data = $this->nama_model->fungsi();
$this->load->view(‘testview’, $data);
}
}
?>
Ketika di-load, model tidak secara otomatis terhubung dengan database. Oleh karenanya ketika kita membuat model, pastikan bahwa database sudah terkoneksi. Untuk melakukan koneksi ke database, kita dapat melakukan beberapa cara diantaranya:
- Database di-load pada konstruktor yang ada pada model. Dengan melakukanloading database pada satu model, maka database hanya dapat diakses pada model tersebut saja.
<? php class Nama_model extends Model {
function Nama_model()
{
parent::Model();
$this->load->database();
}
{
parent::Model();
$this->load->database();
}
} ?>
- Database di-load secara otomoatis pada konfigurasi, sehingga kita tidak perlu selalu melakukan proses loading database setiap kita membuat model. Untuk melakukan hal ini, maka kita buka file autoload.php yang ada pada folder application/config. Atur supaya database dapat secara otomatis di-load, dengan cara sebagai berikut:
$autoload['libraries'] = array(‘database’);
View
View pada dasarnya tidak lebih dari halaman web Pada bagian view inilah kita melakukan desain tampilan dari halaman web kita. Untuk mendesain tampilan yang kita inginkan, kita bisa menggunakan HTML standar, bisa juga dengan menggunakan HTML helper yang telah disediakan oleh CodeIgniter.
View dapat berupa satu tampilan utuh atau bisa juga terdiri dari beberapa view, dimana view-view ini merupakan bagian-bagian dari suatu halaman web seperti header, footer, sidebar, dan lainnya.
Sesuai dengan konsep MVC yang mendasari CodeIgniter, Controller berperan sebagai penghubung antara berbagai komponen yang dibutuhkan CodeIgniter untuk memproses request dari browser. Oleh karenanya view tidak bisa langsung dipanggil untuk melakukan sesuatu, tetapi harus dipanggil melalui controller.
Untuk melihat keterkaitan antara controller dan view dalam menampilkan suatu halaman web, mari kita buat suatu file dengan nama testview.php dengan kode seperti berikut ini:
<html>
<head>
<title>Testing View</title>
</head>
<body>
<h1>Hallo. Anda telah sukses membuat view</h1>
</body>
</html>
<head>
<title>Testing View</title>
</head>
<body>
<h1>Hallo. Anda telah sukses membuat view</h1>
</body>
</html>
Simpan kode di atas ke dalam folder application/views.
Untuk dapat menggunakan suatu file view sehingga dapat ditampilkan, maka gunakan sintak berikut ini:
$this->load->view(‘namaview’);
Namaview adalah nama dari file view yang akan kita tampilkan. Ekstensi ‘.php’ tidak perlu untuk dimasukkan, terkecuali bila kita menyimpan file view tidak menggunakan ekstensi ‘.php’.
Sekarang kita buka lagi controller yang kita buat sebelumnya, yaitu file controller ‘test.php’. Kemudian di dalam fungsi ‘index’ kita masukkan sintak untuk memanggil file view yang telah kita buat, yaitu ‘testview.php’.
<?php
class Test extends Controller {
class Test extends Controller {
function index()
{
$this->load->view(‘testview’);
}
}
?>
{
$this->load->view(‘testview’);
}
}
?>
Kemudian kita coba dengan mengakses http://localhost/test/. Tampilan di browseradalah sebagai berikut:
Pada contoh sebelumnya, kita melakukan loading terhadap satu view saja. CodeIgniter sendiri sebenarnya mengijinkan kita untuk melakukan loading beberapaview dalam satu fungsi di controller secara bersamaan. Misalkan satu halaman terdiri dari beberapa view yang dipisahkan yang terdiri dari header, footer, sidebar,dan main body. Kita bisa melakukan loading terhadap view-view ini secara bersamaan dengan kode seperti berikut ini:
<?php
class Test extends Controller {
class Test extends Controller {
function index()
{
$this->load->view(‘header’);
$this->load->view(‘testview’);
$this->load->view(‘sidebar’);
$this->load->view(‘footer’);
}
}
?>
{
$this->load->view(‘header’);
$this->load->view(‘testview’);
$this->load->view(‘sidebar’);
$this->load->view(‘footer’);
}
}
?>
View-view yang kita loading pada contoh sebelumnya adalah view-view yang berada pada folder application/views. Tidak jarang kita ingin mengorganisir view-view yang kita buat ke dalam folder-folder tertentu. Kalau kita melakukan hal seperti ini maka ketika kita akan melakukan loading terhadap view-view tersebut, maka nama dari folder harus diikutsertakan. Berikut contoh sintaknya:
$this->load->view(‘folder/namaview’);
Pada contoh sebelumnya, controller melakukan loading terhadap view-view halaman yang statis, dimana tidak ada data yang secara dinamis ditampilkan. Controllersebagai penghubung diantara komponen-komponen CodeIgniter, sebenarnya justeru berfungsi untuk melewatkan data-data ke dalam view untuk kemudian ditampilkan. Data-data yang dilewatkan ini bisa berupa data-data dari database maupun data-data yang didefinisikan di dalam controller. Untuk dapat menampilkan halaman web yang dinamis, maka sebelumnya kita harus membuat dulu view yang dapat menampilkan data-data dinamis. Berikut adalah contoh view yang dapat menampilkan data dinamis:
<html>
<head>
<title><?php echo $judul_halaman;?></title>
</head>
<body>
<h1><?php echo $heading;?></h1>
</body>
</html>
<head>
<title><?php echo $judul_halaman;?></title>
</head>
<body>
<h1><?php echo $heading;?></h1>
</body>
</html>
Selanjutnya kita buat controller yang melewatkan data-data dinamis ke dalam view.
<?php
class Test extends Controller {
class Test extends Controller {
function index()
{
$data = array(
‘judul_halaman’ => ‘Testing view’,
‘heading’ => ‘Hallo. Anda telah sukses membuat view’,
);
$this->load->view(‘testview’, $data);
}
}
?>
{
$data = array(
‘judul_halaman’ => ‘Testing view’,
‘heading’ => ‘Hallo. Anda telah sukses membuat view’,
);
$this->load->view(‘testview’, $data);
}
}
?>
Jika kita akses kembali http://localhost/test/ maka kita akan mendapatkan hasil yang sama dengan hasil pada contoh sebelumnya.
Aturan penulisan URL
Pada penjelasan mengenai controller, telah kita lihat sekilas bagaiman cara penulisan URL pada CodeIgniter, dan bagaimana cara mengakses controller, fungsi serta memasukkan parameter lain yang diperlukan. Pada bagian ini akan dibahas lebih lanjut mengenai seluk beluk aturan penulisan URL pada CodeIgniter.
URL pada CodeIgniter dirancang supaya lebih bagus dilihat dan dapat dengan mudah dikenali oleh search engine. Oleh karenanya daripada menggunakan sistem query string yang standar digunakan, CodeIgniter memilih menggunakan pendekatan segment based. Perbedaan dari kedua pendekatan di atas adalah sebagai berikut:
URL pada CodeIgniter dirancang supaya lebih bagus dilihat dan dapat dengan mudah dikenali oleh search engine. Oleh karenanya daripada menggunakan sistem query string yang standar digunakan, CodeIgniter memilih menggunakan pendekatan segment based. Perbedaan dari kedua pendekatan di atas adalah sebagai berikut:
Contoh pendekatan query string standar:
Contoh pendekatan segment based:
Segmen-segmen dalam URL dirancang dengan mengikuti kerangka pendekatan Model-View-Controller. Segmen-segmen ini merepresentasikan hal-hal sebagai berikut:
- Segment ke-1 merepresentasikan controller class yang harus dipanggil.
- Segment ke-2 merepresentasikan fungsi yang ada pada controller class.
- Segment ke-3 dan tambahan segmen lainnya apabila ada, merepresentasikan ID dan variabel-variabel lainnya yang akan dimasukkan ke dalam fungsi yang ada pada controller.
Secara default seperti pada contoh sebelumnya, index.php akan dimasukkan ke dalam URL. Kita bisa menghilangkan index.php ini dari tampilan dengan cara membuat file .htaccess yang dilengkapi dengan aturan yang memungkinkan tidak ditampilkannya index.php pada URL. Berikut contoh file .htaccess menggunakan metode negatif, dimana segala sesuatu dialihkan kecuali hal-hal yang disebutkan:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Pada contoh di atas, setiap HTTP request selain untuk index.php, images, danrobots.txt diperlakukan sebagai request untuk file index.php. Supaya file .htaccess di atas dapat dijalankan, sebelumnya kita harus mengaktifkan terlebih dahulu module RewriteEngine yang ada pada Apache. Pada WAMPServer, untuk mengaktifkan RewriteEngine ini sangat mudah, cukup dengan klik kanan pada ikon WAMPServer, seperti berikut ini:
Walaupun secara default URL pada CodeIgniter menggunakan pendekatan segment based, tetapi apabila kita lebih menginginkan penggunaan pendekatan query string, kita bisa mengaktifkan query string ini dengan merubah aturan pada konfigurasinya. Untuk merubahnya, buka file config.php yang terdapat pada folder application/config, ubah bagian ‘enable_query_strings’ menjadi ‘TRUE’ sehingga menjadi:
$config['enable_query_strings'] = TRUE;
$config['controller_trigger'] = ‘c’;
$config['function_trigger'] = ‘m’;
Apabila pendekatan query string ini diaktifkan, maka baik controller maupun fungsi dapat diakses dengan menggunakan ‘trigger’ yang telah kita tentukan sebelumnya. Contoh URL yang sebelumnya dibuat dengan pendekatan segment based, apabila ditulis dengan pendekatan query string akan menjadi sebagai berikut:
$config['controller_trigger'] = ‘c’;
$config['function_trigger'] = ‘m’;
Apabila pendekatan query string ini diaktifkan, maka baik controller maupun fungsi dapat diakses dengan menggunakan ‘trigger’ yang telah kita tentukan sebelumnya. Contoh URL yang sebelumnya dibuat dengan pendekatan segment based, apabila ditulis dengan pendekatan query string akan menjadi sebagai berikut:
Controller
Controller berfungsi sebagai penghubung antara komponen-komponen yang dibutuhkan untuk memproses HTTP request dan menghasilkan halaman web. Terkait dengan fungsinya tersebut, maka controller akan berhubungan langsung dengan URI. Perhatikan contoh URI berikut ini:
Pada contoh di atas, CodeIgniter akan mencoba mencari controller yang bernamatest.php dan kemudian mengeksekusi file controller tersebut. Untuk membuktikannya, mari kita buat file test.php. File test.php dapat dibuat dengan menggunakan aplikasi text editor seperti Notepad, Notepad++, Wordpad, EditPlus, Macromedia Dremweaver, dsb. Di dalam text editor yang kita gunakan, tuliskan kode berikut:
<?php
class Test extends Controller {
class Test extends Controller {
function index()
{
echo ‘Hello World!’;
}
}
?>
{
echo ‘Hello World!’;
}
}
?>
Save kode di atas ke dalam folder application/controllers.Sekarang coba masuk ke alamat http://localhost/index.php/test/Maka di browser akan muncul tampilan sebagai berikut:
Perlu selalu diingat bahwa nama dari setiap classcontroller yang kita buat harus diawali dengan huruf kapital. Setiapclass yang kita buat juga harus extends Controllersupaya mewarisi fungsi-fungsi classcontroller dan dikenali sebagai controller. Filecontroller yang kita buat harus disimpan dengan format .phpdimana nama file harus sama dengan nama class tetapi nama file harus dimulai dengan huruf kecil. Seperti pada contoh di atas, nama class adalah Test dimana class ini extends Controller dan disimpan dengan nama test.php.
Setiap controller minimal terdiri dari satu fungsi. Pada controller Test yang baru saja kita buat, fungsi yang kita buat adalah fungsi index(). Fungsi index() merupakan fungsi yang secara default akan dipanggil apabila argumen kedua pada URL kosong. Jadi ketika kita mengakses alamat http://localhost/index.php/test maka sebenarnya kita sedang mengakses fungsi index() padacontroller test. Hasil yang sama akan didapatkan apabila kita mengakes alamat http://localhost/index.php/test/index
Mari kita coba buat satu fungsi yang lain untuk lebih memperjelas pemahaman kita mengenai controller. Fungsi ini kita namakan ‘welcome’. Berikut kode dari fungsi tersebut:
<?php
class Test extends Controller {
class Test extends Controller {
function index()
{
echo ‘Hello World!’;
}
function welcome()
{
echo ‘Selamat anda telah membuat fungsi!’;
}
}
?>
{
echo ‘Hello World!’;
}
function welcome()
{
echo ‘Selamat anda telah membuat fungsi!’;
}
}
?>
Ketikkan alamat berikut di URL: http://localhost/index.php/test/welcome.
Tampilan di browser adalah sebagai berikut:
Jika segmen URL lebih dari dua segmen, maka segmen ke-2 dan seterusnya akan diperlakukan sebagai parameter untuk fungsi. Perhatikan contoh berikut ini:
<?php
class Test extends Controller {
class Test extends Controller {
function anggota($nama, $id)
{
echo “Nama anggota adalah:” .$nama;
echo “</br>”;
echo “Nomor anggota adalah:” .$id;
}
}
?>
{
echo “Nama anggota adalah:” .$nama;
echo “</br>”;
echo “Nomor anggota adalah:” .$id;
}
}
?>
Ketikkan alamat berikut di URL: http://localhost/index.php/test/anggota/eddy/2. Tampilan di browser adalah sebagai berikut:
Di dalam suatu aplikasi web, tentunya bisa terdapat banyak controller. Di dalam CodeIgniter, kita harus menentukan controller mana yang secara default akan dipanggil ketika nama dari website kita dipanggil. Untuk menentukan controller default dari aplikasi kita, buka file routes.php yang ada pada folderapplication/config.Misalkan kita ingin supaya controller Test menjadi controller default. Maka ganticontroller default dengan nama Test seperti berikut ini:
$route['default_controller'] = ‘Test’;
Apabila kita menginstall CodeIgniter, biasanya di dalam paket CodeIgniter terdapat Controller bawaan dengan nama ‘welcome’. Controller ini menjadicontroller defaultdari CodeIgniter dan berfungsi untuk menampilkan halaman selamat datang di CodeIgniter. Kita bisa menghapus controller ini dan kemudian mengganti controller default dengan controller apapun yang kita inginkan.
Aliran data sistem
Gambar berikut ini menggambarkan aliran data dalam sistem:
Gambar Aliran data sistem
Berikut penjelasan dari gambar di atas:
- ‘index.php’ berperan sebagai controller terdepan, memulai sumber daya utama untuk menjalankan CodeIgniter.
- Router memeriksa request HTTP untuk menentukan apa yang seharusnya dilakukan.
- Jika terdapat file cache, maka file tersebut langsung dikirim ke browser, melampaui eksekusi sistem secara normal.
- Sebelum controller aplikasi dijalankan, request HTTP dan setiap data yang dimasukkan user disaring untuk keperluan keamanan.
- Controller memanggil model, library, plugin, helper dan sumber daya lainnya yang diperlukan untuk memproses request.
- Data dari controller kemudian dirender di View dan dikirim ke browser.
Konfigurasi CodeIgniter
Setelah sukses menginstall CodeIgniter dan memahami folder-folder yang ada pada CodeIgniter, langkah selanjutnya sebelum kita membangun aplikasi web adalah memahami konfigurasi yang harus dilakukan. Seperti telah dijelaskan sebelumnya, di dalam CodeIgniter terdapat folder system/application/config, yang berisi file-file untuk mengendalikan konfigurasi dari CodeIgniter. File-file konfigurasi utama yang perlu untuk dipahami adalaha file config.php, autoload.php, database.php, danroutes.php.
Tahapan konfigurasi yang biasa dilakukan pada pengembangan aplikasi CodeIgniter adalah sebagai berikut:
- Konfigurasi base_url
Base_url adalah nama dari situs kita. Dalam masa pengembangan, nama base_urlbiasanya kita isi dengan nama localhost. Tetapi apabila aplikasi web kita, akan kita unggah ke dalam web server dengan domain tertentu, maka kita harus mengisinya dengan nama dari website kita. Jika tidak maka akan terjadi error yang menyebabkan aplikasi web kita tidak jalan.
Konfigurasi base_url ini terdapat pada file config.php, dengan sintak sebagai berikut:
$config['base_url'] = “http://nama-situs-kita.com/”;
- Konfigurasi routing
Konfigurasi routing dilakukan untuk menentukan controller mana yang akan dipanggil pada saat kita menuliskan alamat website pada web browser. Misalkan ketika kita memanggil http://localhost, maka sistem akan mencari controller mana yang merupakan controller yang harus pertama kali dipanggil.
Konfigurasi routing terdapat pada file routes.php, dengan sintak sebagai berikut:
$route['default_controller'] = “welcome”;
Dengan sintak seperti di atas, maka controller yang pertama kali dipanggil ketika alamat website kita dipanggil adalah controller welcome. Apabila kita menginstall CodeIgniter, CodeIgniter akan menyertakan satu buah controller yang dinamakancontroller welcome. Apabila kita sudah membuat suatu controller, dan controllertersebut akan kita jadikan sebagai controller yang pertama kali dipanggil, maka ganti nama controller welcome dengan nama controller yang telah kita buat. Misalkancontroller yang kita buat namanya adalah berita, maka ganti controller welcomedengan controller berita.
$route['default_controller'] = “berita”;
- Konfigurasi library
CodeIgniter telah menyediakan berbagai macam library, helper, plugin untuk membantu pengembang dalam mengembangkan aplikasi web dengan cepat dan efisien. Untuk dapat menggunakan library-library ini, pengembang bisa melakukan proses loading terhadap library-library ini di dalam controller. Pengembang juga dapat mengatur supaya library-library tersebut dapat secara otomatis digunakan tanpa harus selalu melakukan proses loading. Biasanya untuk library-library yang selalu digunakan seperti library untuk database, selalu diatur supaya secara otomatis dapat digunakan tanpa harus selalu melakukan proses loading dicontroller. Konfigurasi untuk mengatur supaya library dapat secara otomatis digunakan terdapat pada file autoload.php. Contoh sintak untuk melakukan prosesautoloading terhadap library, plugin, helper adalah sebagai berikut:
$autoload['libraries'] = array(“database”,”input”,”session”);
$autoload['helper'] = array(“array”,”date”,”form”);
$autoload['plugin'] = array(‘captcha’, ‘js_calendar’);
- Konfigurasi database
Konfigurasi database dilakukan untuk menentukan jenis database apa yang akan kita gunakan dan data-data terkait yang dibutuhkan untuk dapat menjalankan database tersebut (misal username dan password). Konfigurasi database ini terdapat pada file database.php. Berikut setingan utama yang harus dilakukan pada database:
$db['default']['hostname'] = “localhost”; //diisi dengan nama hostname dari database kita.
//Biasanya cukup dengan localhost.
$db['default']['username'] = “”; //diisi dengan nama dari username database kita
$db['default']['password'] = “”; // diisi dengan password
$db['default']['database'] = “”; //diisi dengan nama database
$db['default']['dbdriver'] = “mysql”; //diisi dengan jenis database yang kita gunakan.
//Pada contoh ini digunakan database dengan jenis mysql
Struktur file CodeIgniter
Setelah berhasil menginstall CodeIgniter, mari kita lihat struktur file dari CodeIgniter tersebut.
Gambar Strukut file CodeIgniter
Dari gambar di atas, dapat kita lihat bahwa file-file framework Codeigniter yang digunakan untuk mengembangkan aplikasi web terdapat pada folder system. Folder-folder ini dapat digolongkan ke dalam tiga kelompok besar sebagai berikut:
- Kelompok pertama adalah kelompok folder yang akan kita isi dengan file-file aplikasi web yang akan kita buat. Kelompok folder ini terdiri dari folder Model, View, dan folder Controller. Ketiga folder ini terdapat pada folder Application.
- Kelompok kedua adalah kelompok folder yang berisi file-file untuk menjalankan system. Folder-folder ini terdiri dari folder system/codeigniter, system/libraries, system/database.Kita bisa membaca dan merubah file-file tersebut, tetapi ingat bahwa merubah file-file ini bisa menyebabkan perubahan pada bagaimana system berjalan. Jadi hati-hati ketika berniat untuk merubah file-file ini.
- Kelompok ketiga adalah kelompok folder yang sudah ditulis oleh pengembang CodeIgniter, tetapi mungkin memerlukan penambahan atau perubahan. Folder-folder ini terdiri dari folder language, config, error. Pada dasarnya folder-folder ini sudah diatur pada setingan default, tetapi kita perlu untuk merubah beberapa file yang ada pada folderconfig begitu selesai menginstall CodeIgniter, untuk menentukan beberapa setingan penting.
Lengkapnya penjelasan mengenai folder-folder yang ada pada folder system/ adalah sebagai berikut:
- application adalah folder yang berisi aplikasi yang kita bangun. Pada dasarnya folder ini berisi model-model, view-view, controller-controller dan lainnya (seperti helper dan plugin). Dengan kata lain folder ini tempat dimana kita akan meletakkan hampir semua kode yang kita buat.
- cache adalah folder yang berisi semua halaman yang di-cache untuk aplikasi kita.
- codeigniter adala folder tempat dimana kode utama dari CodeIgniter berada. Sebaiknya kita tidak merubah isi dari folder ini.
- database adalah folder yang berisi driver-driver database dan yang berkaitan dengan database. Sekali lagi sebaiknya tidak merubah isi dari folder ini.
- fonts adalah folder yang berisi informasi dan hal yang terkait dengan font.
- helpers adalah folder yang berisi helper-helper standar yang ada di CodeIgniter (seperti date, cookie, dan URL helper).
- language adalah folder yang berisi file-file bahasa. Kita bisa mengabaikan folder ini.
- libraries adalah folder yang berisi librari-librari standar yang ada pada CodeIgniter untuk membantu membuat calendar, mengunggah file, dan lainnya. Kita bisa membuat librari kita sendiri atau mengembangkan librari yang sudah ada, bahkan menggantikan librari yang sudah ada, tetapi librari-librari ini sebaiknya disimpan pada folder application/libraries untuk memisahkan dari librari-librari standar yang ada pada direktori ini.
- logs adalah folder yang digunakan CodeIgniter untuk menulis error dan log-log yang lain
- plugins adalah folder yang berisi plugin. Plugin dan helper pada dasarnya sama, yang membedakan adalah plugin biasanya terdiri dari satu fungsi sementara helper sering memiliki banyak fungsi dalam satu file.
Seperti sudah disinggung sebelumnya, folder system/application merupakan folder yang sangat penting karena 99% pekerjaan pengembang akan berhubungan dengan folder tersebut. Foldersystem/application dipecah menjadi beberapa folder yaitu sebagai berikut:
- config adalah folder yang berisi beberapa file penting yang mengendalikan konfigurasi sistem. File-file ini mengatur mengenai database dan variabel-variabel yang perlu diketahui CodeIgniter.
- controllers adalah folder yang berisi controller-controller yang kita buat untuk aplikasi kita.
- errors adalah folder yang berisi template-template error dari CodeIgniter. Kita boleh merubahnya sesuai dengan keinginan kita.
- Hooks adalah folder yang berisi hook-hook yang kita buat. Hook sendiri adalah cara terbaik untuk memperluas inti dari CodeIgniter.
- libraries adalah folder yang berisi librari-librari yang kita buat khusus untuk aplikasi kita.
- models adalah folder yang berisi file-file model yang kita buat untuk aplikasi kita.
- views adalah folder yang berisi file-file view yang kita buat untuk aplikasi kita.
sumber:http://samsoleh.wordpress.com/category/codeigniter/
No comments:
Post a Comment