Nah, biar URL itu lebih enak buat dibaca, mending kita hilangkan index.php nya jadi seperti ini:
http://www.cheyuz.com/berita/add
Caranya sangat sederhana,, bagi pecinta maupun pengembang framework mungkin udah ga asing lagi memakai cara ini, cara yang dipake untuk ngerewrite URL, kita memakai 1 file yang bernama .htaccess. Kita buat file .htaccess di notepad:
RewriteEngine on RewriteRule ^$ index.php [L] RewriteCond $1 !^(index.php) RewriteRule ^(.*)$ index.php/$1 [L]
kemudian save file tersebut di webroot/base_url kamu sekarang kamu bisa memanggil halaman dengan URL seperti ini:
http://www.cheyuz.com/berita/add
TAPII,,,,, ada suatu masalah sama seperti waktu kemaren aku nge-rombak http://www.cheyuz.com.. Kan aku nge-rombak situs Cheyuz.com dari asalnya yang ga pake framework yang kini udah pake CI.. Nah pas kemaren itu aku ngupload hasil rombakanku ke hosting.. nah tau-tau pas diupload, ternyata aneh, kenapa ketika aku ketik:
http://www.cheyuz.com/diary
ato yang lainnya ternyata ga bisa kebuka, yang keluar tampilan home terus Tetapi kalo URL nya seperti ini bisa
http://www.cheyuz.com/index.php/diary
Nah, kalo temen2 juga ngalamin hal yang sama, ternyata masalahnya ada config CI sendiri, yaitu dengan memodifikasi config.php:
$config['uri_protocol'] = "AUTO";
Diganti dengan
$config['uri_protocol'] = "REQUEST_URI";
CodeIgniter VS CakePHP
CodeIgniter (CI) adalah salah satu framework PHP yang cukup populer, bahkan bisa sangat populer karena sering dipakai di kalangan perusahaan IT dalam bidang pengembangan Web (Web Development). Tetapi sebelumnya, apa itu PHP Framework? Gampangnya framework adalah kumpulan fungsi-fungsi dan class untuk tujuan tertentu yang sudah siap pakai sehingga bisa lebih mempermudah pekerjaan pemrograman, tanpa harus reinvent wheel. Untuk lebih lengkapnya anda bisa membacanya di wikipedia atau situs lain yang sejenis (googling aja
).
Nah, framework yang populer dan sering dipakai di lapangan salah dua-nya adalah CodeIgniter dan CakePHP. Tetapi kalian tau ga keunggulan dan kelebihan kedua framework ini? ok, kita bahas di sini Kalo kalian baca dokumentasi dan bahkan memakai CI, maka terlihat keunggulan CI ini adalah sebagai berikut\
Kelebihan CI Performa sangat cepat : salah satu alasan tidak menggunakan framework adalah karena eksekusinya yang lebih lambat daripada PHP from the scracth, tapi Codeigniter sangat cepat bahkan mungkin bisa dibilang codeigniter merupakan framework yang paling cepat dibanding framework yang lain. Mendukung PHP4 dan PHP5 Konfigurasi yang sangat minim (nearly zero configuration) : tentu saja untuk menyesuaikan dengan database dan keleluasaan routing tetap diizinkan melakukan konfigurasi dengan mengubah beberapa file konfigurasi seperti database.php atau autoload.php, namun untuk menggunakan codeigniter dengan setting standard, anda hanya perlu merubah sedikit saja file pada folder config. Dokumentasi yang sangat lengkap : Setiap paket instalasi codeigniter sudah disertai user guide yang sangat bagus dan lengkap untuk dijadikan permulaan, bahasanya pun mudah dipahami bahkan untuk Cheyuz yang bahasa inggrisnya kurang baik, semoga saja kedepan ada yang mau menerjemahkannya ke bahasa Indonesia. Ditambah lagi oficial video tutorial membuat blog dalam 20 menit yang disediakan di situsnya, untuk mengaksesnya anda bisa menggunakan quick time atau bisa juga mendownload video yang sudah diupload pada youtube.com seperti yang
pernah Cheyuz jelaskan di tips belajar pemrograman melalui youtube.com. Mudah dipelajari : Mungkin pengaruh dokumentasi yang bagus sehingga codeigniter mudah untuk dipelajari, atau memang framework ini benarbenar mudah dipelajari. Sebelumnya Cheyuz pernah mencoba-coba mempelajari Zend, Symfony, dan Prado, tiga framework yang memang lebih powerfull daripada codeigniter, tapi juga lebih sulit untuk dipelajari. Inilah alasan terkuat Cheyuz jatuh cinta pada codeigniter. Compatible dengan banyak hosting : tidak seperti kebanyakan framework lain yang hanya bisa berjalan di PHP 5, codeigniter bisa berjalan dengan lancar pada PHP 4, meskipun ini saat ini sudah banyak hosting yang menggunakan PHP 5 tapi Cheyuz pernah mendapati ada beberapa yang masih menggunakan PHP 4. Juga codeigniter tidak menggunakan PEAR atau tool CLI lainnya, sehingga memberi keleluasaan bagi anda yang tidak mempunyai akses ke shell pada hosting anda.
Kekurangan: Manual yang ada tidak selengkap CI. Ini merupakan salah satu kekurangan CakePHP, oleh karena itu CakePHP mungkin bisa dipelajari lebih lama daripada CI. Terlalu banyak aturan, dan tidak sefleksibel CI, seperti nama table harus plural, nama controller harus sama dengan nama folder untuk view nama view harus sama dengan nama action, dan lain2 Butuh waktu belajar yang lebih lama untuk menguasai framework ini dibanding CI. Tapi jika sudah benar-benar mengerti, banyak kelebihan dibanding CI. Beberapa situs menyarankan anda untuk belajar dan terbiasa dulu dengan CodeIgniter baru kemudian mempelajari CakePHP (http://www.zenperfect.com/2007/07/15/faceoff-codeigniter-vs-cakephp/)
OK, kita mulai aja kita di sini memakai XAMPP pertama-tama, extract file codeigniter.rar ke C:\xampp\htdocs, file bisa didownload di sini. Misalnya kita namakan nama folder root (nama situs) kita adalah webku.
Konfigurasi
Kemudian, hal yang pertama harus dilakukan adalah konfigurasi awal, yaitu base_url, base_url adalah nama root situs kita caranya edit file /webku/system/application/config/config.php, ubah $config['base_url'] = http://example.com/ menjadi:
$config['base_url'] = "http://localhost/webku/";
Langkah kedua adalah konfigurasi routes, yaitu controller default apakah yang ingin diload? jadi di sini adalah konfigurasi untuk controller home, sehingga ketika kita mengetikkan url http://localhost/webku maka yang dipanggil adalah controller yang sudah dikonfigurasi di routes ini.. Cara konfigurasinya yaitu dengan mengedit file /webku/system/application/config/routes.php, dan di bagian $route['default_controller'] isi dengan home sehingga seperti ini:
$route['default_controller'] = "home";
kita akan membuat supaya ketika kita menuju url http://localhost/webku maka controller yang akan dijalankan adalah controller home . Kemudian setelah itu adalah konfigurasi Databasenya ada di file /webku/system/application/config/database.php, Di situ terlihat konfigurasi-konfigurasi seperti host, username, password, nama db, dsb.. silakan diisi seperti berikut:
$db['default']['hostname'] $db['default']['username'] $db['default']['password'] $db['default']['database'] $db['default']['dbdriver'] $db['default']['dbprefix'] $db['default']['pconnect'] $db['default']['db_debug'] $db['default']['cache_on'] $db['default']['cachedir'] $db['default']['char_set'] $db['default']['dbcollat'] = = = = = = = = = = = = "localhost"; "root"; ""; "blog"; //nama database "mysql"; ""; TRUE; TRUE; FALSE; ""; "utf8"; "utf8_general_ci";
Kemudian konfigurasi selanjutnya adalah konfigurasi untuk autoload, jadi ketika situs dibuka, library/helper/model/dsb apakah yang akan selalu diload.. file ada di
Kemudian yang terakhir adalah penambahan .htaccess supaya kita tidak perlu mengetikkan index.php di URL kita, cara untuk menghilangkan index.php (menggunakan .htaccess) ada di sini.
Contoh Aplikasi Database Sederhana
Kita buat sebuah contoh di mana kita akan menampilkan isi dari database di atas.. Pertama-tama, buatlah model terlebih dahulu di /webku/system/application/model/ dengan nama file buku_tamu.php yang berisi code sebagai berikut:
<?php class Buku_tamu extends Model{ function selectAll() { return $this->db->get('buku_tamu')->result(); } } ?>
Di dalam folder /webku/system/application/controller/ bikin sebuah file bernama home.php untuk membuat class controller yang bernama Home isi dari home.php adalah:
<?php class Home extends Controller{ function __construct() { parent::Controller(); $this->load->model('buku_tamu'); } function index() { $data['title'] = 'Ini adalah aplikasi sederhana'; //memanggil function selectAll di model buku_tamu, dimasukkan ke $data['buku_tamu'] $data['buku_tamu'] = $this->buku_tamu->selectAll(); //meload view bernama home_view.php dengan data variable adalah $data $this->load->view('home_view', $data); } }
?>;
Nah, kemudian kita buat file home_view.php di folder /webku/system/application/view/ dengan isi sebagai berikut:
<h2><?php echo $title ?></h2> <table> <tr> <td>No</td> <td>Nama</td> <td>Email</td> <td>Situs</td> <td>Komentar</td> </tr> <?php $i = 0 ?> <?php foreach ($buku_tamu as $bt): ?> <tr> <td><?php echo $i++ ?></td> <td><?php echo $bt->nama ?></td> <td><?php echo $bt->email ?></td> <td><?php echo $bt->situs ?></td> <td><?php echo $bt->komentar ?></td> </tr> <?php endforeach ?> </table>
Silakan dibuka di browser url berikut: http://localhost/webku Hasilnya adalah sebagai berikut:
Jadi kita membuat tabel kosong bernama mahasiswa dengan field seperti di atas
Diharapkan kamu yang mengikuti tutorial ini udah pernah mengikuti tutorial sebelumnya.. kenapa? karena konfigurasinya kita menggunakan konfigurasi di tutorial dasar part I, bisa klik di sini Seperti pada tutorial dasar part I, webroot kita ini diasumsikan bernama webku, dan konfigurasinya diasumsikan sama, oleh karena itu silahkan baca tutorial dasar part I terlebih dahulu. 1. Menampilkan semua data
OK, langkah pertama adalah membuat sebuah model. Buatlah sebuah file mahasiswa_model.php di /system/application/models dengan isi adalah barisan kode seperti berikut:
<?php /** * @author Cecep Yusuf */ class Mahasiswa_model extends Model { } ?>
Sejauh ini, kita sudah membuat sebuah model untuk mahasiswa, yang nantinya mempunyai banyak fungsi untuk mengolah table mahasiswa Di bawah ini, kita akan menambahkan function selectAll(), yang mana berfungsi untuk menyeleksi semua field di table mahasiswa (select * from mahasiswa), jadi code tadi setelah ditambahkan menjadi seperti berikut:
<?php
/** * @author Cecep Yusuf */ class Mahasiswa_model extends Model { function selectAll(){ return $this->db->get('mahasiswa')->result(); } } ?>
Nah, sejauh ini kita sudah bikin function selectAll() yang berfungsi untuk memilih semua field dari table mahasiswa. Setelah itu, model akan diolah oleh controller, jadi sekarang kita buat sebuah controller yang berfungsi untuk memanipulasi objek mahasiswa_model OK, buatlah sebuah controller bernama data_mahasiswa.php di /system/application/controllers dengan isi file sebagai berikut:
<?php /** * @author Cecep Yusuf */ class Data_mahasiswa extends Controller { function __construct() { parent::Controller(); } } ?>
function __construct() adalah sebagai konstruktor berbagai perintah yang ada di dalam fungsi ini akan selalu dipanggil di saat objek Data_mahasiswa dibuat jadi berbagai fungsi untuk meload library, model, helper, dan sebagainya, kita tinggal masukkan di function ini supaya tidak diketik ulang di setiap fungsi. Karena kita akan meload model mahasiswa_model setiap kali dibuat controller, maka kita load modelnya di bagian __construct() di dalam controller Data_mahasiswa. Jadi kode lengkapnya seperti berikut:
<?php /** * @author Cecep Yusuf */ class Data_mahasiswa extends Controller { function __construct() { parent::Controller(); $this->load->model('mahasiswa_model'); } } ?>
Kemudian, kita buat function index() sebagai penampil semua data yang ada di table mahasiswa, jadi URLnya akan berbentuk http://localhost/webku/data_mahasiswa/index ATAU http://localhost/webku/data_mahasiswa (Index tidak perlu dituliskan)
<?php /** * @author Cecep Yusuf
*/ class Data_mahasiswa extends Controller { function __construct() { parent::Controller(); $this->load->model('mahasiswa_model'); } function index(){ $data['mahasiswa'] = $this->mahasiswa_model->selectAll(); $this->load->view('data_mahasiswa_view', $data); } } ?>
Di dalam function index() di atas, kita lihat ada script seperti ini:
$data['mahasiswa'] = $this->mahasiswa_model->selectAll(); kode tersebut berarti data hasil keluaran dari function selectAll() di model mahasiswa_model berupa array dan disimpan di dalam array $data['mahasiswa'],
yang
nantinya data tersebut bisa diakses di view.. Kemudian kita lihat lagi, ada script berikut:
$this->load->view('data_mahasiswa_view'); function view() dalam objek load adalah untuk meload view yang sudah kita buat di /system/application/views, dengan mengeset variable hasil ekstrak dari variable $data,
sehingga nanti bisa diakses dari view.. OK, kita buat view-nya dengan nama file data_mahasiswa_view.php di /system/application/views dengan isi sebagai berikut ini:
<h1>Data Mahasiswa</h1> <table> <thead> <tr> <th>No</th> <th>NIM</th> <th>Nama</th> <th>Alamat</th> <th>Aksi</th> </tr> </thead> <tbody> <?php $i = 1 ?> <?php foreach($mahasiswa as $m): ?> <tr> <td><?php echo $i++ ?></td> <td><?php echo $m->nim ?></td> <td><?php echo $m->nama ?></td> <td><?php echo $m->alamat ?></td> <td></td> </tr> <?php endforeach ?> </tbody> </table>
Sekarang, coba buka alamat di browser: http://localhost/webku/data_mahasiswa, keluar apa? table kan? dengan data KOSONG. OK, sekarang kita lanjut ke sesi yg kedua.. yaitu MENAMBAHKAN DATA
2. Menambahkan data
Data Mahasiswa
N o 1 2 NIM Nama Alamat Cipanas, Cianjur Jakarta Aksi edit | delete | detail edit | delete | detail
Tambah data Silakan buat sebuah anchor() (a) di bawah table di dalam file data_mahasiswa_view.php.. Jangan lupa sebelumnya load dulu url_helper di controller dengan cara menambahkan code berikut:
<?php ... $this->load->helper('url'); ... ?>
anchor() adalah function helper yang udah tersedia di CI, untuk menggantikan tag a
Buatlah sebuah anchor sebagai link ke function add() di Controller (fungsi ini belum dibuat), caranya dengan menambahkan script berikut:
<?php echo anchor('data_mahasiswa/add', 'Tambah Data') ?>
Langkah selanjutnya adalah membuat function add() di controller data_mahasiswa.php, tambahkan function ini:
...
...
Di sana terdapat code untuk meload file view yang bernama add_view.php Silakan buat view add_view.php di folder /system/application/views dengan isi sebagai berikut:
<h1>Tambah data</h1> <form action="" method="post"> <table> <tr> <th>NIM</th> <td><input name="nim" /></td> </tr> <tr> <th>Nama</th> <td><input name="nama" /></td> </tr> <tr> <th>Alamat</th> <td><textarea name="alamat"></textarea></td> </tr> <tr> <th></th> <td><input type="submit" value="tambah" /></td> </tr> </table> </form>
Perlu diketahui bahwa cara di atas belum menggunakan library form bawaan dari CI.. kita memakai cara manual dulu, sebelum nanti kita bahas penggunaan helper di CI di tutorial selanjutnya
Method yang digunakan yaitu POST, yang akan menghasilkan sebuah variable array $_POST Sebelumnya, kita tambahkan function insert() di model mahasiswa_model.php seperti berikut:
... function insert($set){ $this->db->insert('mahasiswa', $set); }
...
function insert tersebut sudah ada di library database CI, jadi kita tidak usah membuat query insert into. lagi sekarang, di Controller data_mahasiswa.php kita ubah function add() menjadi seperti berikut:
... function add() { if($_POST==NULL) { $this->load->view('add_view'); }else { $this->mahasiswa_model->insert($_POST); redirect('data_mahasiswa/index'); } }
...
Kita jelasin, di sana ada fungsi If untuk mengecek apakah data dari $_POST sudah terSET atau belum kalo kita udah mengklik submit, berarti kita sudah mengeset variable $_POST jika belum (=NULL), maka program hanya meload view saja. di sana ada function redirect(), yaitu function bawaan CI, yang berfungsi untuk meredirect halaman (mengalihkan), sehingga ketika kita menambahkan data, maka akan dialihkan lagi ke index Sejauh ini, kamu berhasil membuat aplikasi CI untuk menambahkan data ke database dan menampilkannya. silakan ketik url berikut untuk melihat hasilnya: http://localhost/webku/data_mahasiswa
Sebelumnya kita tambahkan 2 buah anchor (link) untuk membuat hyperlink menuju ke masing2 fungsi tersebut,.. yaitu anchor untuk edit dan delete.. (catatan: edit = update). Buatlah dua buah anchor dengan bentuk kode seperti ini di kolom paling kanan tabel:
<?php echo anchor('data_mahasiswa/edit/'.$m->id, 'Ubah') . ' | ' . anchor('data_mahasiswa/delete/'.$m->id, 'Hapus'); ?>
<td><?php echo $i++ ?></td> <td><?php echo $m->nim ?></td> <td><?php echo $m->nama ?></td> <td><?php echo $m->alamat ?></td> <td><?php echo anchor('data_mahasiswa/edit/'.$m->id, 'Ubah') . ' | ' . anchor('data_mahasiswa/delete/'.$m->id, 'Hapus'); ?></td> </tr> <?php endforeach ?> </tbody> </table>
previewnya:
Data Mahasiswa
N o 1 2 NIM Nama Alamat Cipanas, Cianjur Jakarta Aksi edit | delete edit | delete
Tambah data
1. Menghapus Data
Kemudian setelah itu, kita buat sebuah function di dalam model mahasiswa_model.php di folder /system/application/models:
<?php ... function delete($id){ $this->db->delete('mahasiswa', array('id'=>$id)); } ... ?>
...
fungsi di atas memanggil fungsi dari objek Mahasiswa_model yaitu delete, yang akan menghapus data dari table mahasiswa yang id nya adalah parameter dari function tersebut ($id) Kemudian setelah itu baru diredirect/dialihkan ke tampilan index dari controller data_mahasiswa.
2. Mengubah Data
Nah, untuk mengubah data.. kita harus tahu fungsi untuk mengubah database dari Active Record yang disediakan oleh CI.. yaitu $this->db->update($nama_table, $data)
Sekarang, kita tambahkan function update() dan select($id) untuk menyeleksi SATU data yang akan dipilih berdasarkan id-nya dibuat di model mahasiswa.php di /system/application/models,,,
... function update($id){ $this->db->where('id',$id)->update('mahasiswa', $_POST); } function select($id){ return $this->db->get_where('mahasiswa', array('id'=>$id))->row(); }
...
Di situ ada fungsi update(), yang equivalen dengan query update from mahasiswa where id=$id set $_POST. Dan fungsi select yang nantinya akan kita gunakan ketika nilai dari data akan dimasukkan ke dalam sebuah form (untuk diedit) sehingga kita menggunakan row() yang berfungsi meretrieve data menjadi objek, tetapi hanya SATU BARIS DATA... (segitunya sampe dipertebel hehe ) Setelah kita membuat modelnya kemudian kita tambahkan function edit() di Controller data_mahasiswa.php di /system/application/controller/:
... function edit($id){ $data['m'] = $this->mahasiswa_model->select($id); $this->load->view('edit_view',$data); } ...
Di situ kita buat sebuah fungsi edit di controller data_mahasiswa.php dengan parameter $id.. karena kita akan mengubah data pada setiap data yang ada dengan mengambil id-nya dan dipanggillah fungsi update() dari model mahasiswa Tetapi sebelumnya kita harus ngambil sebuah data mahasiswa tertentu berdasarkan $id yang ada untuk dimasukkan ke dalam form,, sehingga nantinya bisa diubah makanya kita membuat fungsi select() Ini adalah view yang harus ada di /system/application/views dengan nama file edit_view.php (yang udah kita masukkan ke dalam fungsi $this->load->view() di controller. Ini adalah isi dari view-nya:
<h1>Ubah data</h1> <form action="" method="post"> <table> <tr> <th>NIM</th> <td><input name="nim" value="<?php echo $m->nim ?>" /></td> </tr> <tr> <th>Nama</th> <td><input name="nama" value="<?php echo $m->nama ?>" /></td> </tr> <tr> <th>Alamat</th> <td><textarea name="alamat"><?php echo $m->alamat ? ></textarea></td> </tr> <tr> <th></th> <td><input type="submit" value="ubah" /></td> </tr>
</table> </form>
Jadi, ketika view tersebut diload, maka form akan langsung terisi dengan data yang kita panggil dengan $id yang ada di URL (yang merupakan parameter) Kemudian, di controller kita tambahkan code berikut:
... function edit($id) { if($_POST==NULL) { $data['m'] = $this->mahasiswa_model->select($id); $this->load->view('edit_view',$data); }else { $this->mahasiswa_model->update($id); redirect('data_mahasiswa'); } }
...
Kita lihat, ada fungsi if else buat apa tuh?? itu buat ngecek apakah data udah dikirim atau belum (NULL)? Nah, klo udah dikirim berarti bakal diupdate kalo belum maka program akan mengambil data (select) dan dimasukkan ke dalam form Kemudian terdapat fungsi redirect (sama seperti add), ketika data sudah diubah, maka halaman langsung dialihkan ke dalam action yang ada di prameter redirect tersebut. Nah, sejauh ini kita sudah membuat aplikasi CRUD lengkap Create, Read, Update, dan Delete. Silakan cek program yang kita bikin sejauh ini dengan mengetikkan alamat url : http://localhost/webku/data_mahasiswa
Di dalam function index, kode tersebut akan meload view header.php, sidebar.php, home_view.php, dan footer.php. Cara ini sebenarnya kurang efektif, walaupun yang dihasilkan adalah sama, yaitu nge-load lengkap sebuah halaman web (dari tag [html] sampai [/html]). Kenapa kurang efektif? karena di setiap function kita harus meload lagi semua elemen di atas Ini baru satu function, bagaimana jika di dalam satu controller terdapat 50 function? tentu hal ini dapat merepotkan, dan sangat tidak efektif karena membuat redudansi kode.
Kode di atas adalah sebuah template default website kita, yang berarti setiap action/function yang akan kita panggil akan selalu meload tag html di atas, mulai dari title, kemudian load CSS atau JS misalnya, terus header-nya, topmenu, footer, dan sebagainya. Kita cukup menambahkan elemen di file tersebut.
Contoh ini belum menggunakan CSS, pembahasan tentang CSS akan dijelaskan pada tutorial selanjutnya
Setelah membuat file default.php, buatlah semua file layout element (header, topmenu, dan footer) dan simpan di direktori /system/application/view/layout/element/. Berikut adalah isi dari masing-masing elemen:
Isi dari file-file di bawah ini hanya pemisalan/contoh ../view/layout/element/header.php
<img src="images/banner.jpg" /> Ini adalah HEADER
../view/layout/element/topmenu.php
<a href="#">MENU 1</a> | <a href="#">MENU 2</a> | <a href="#">MENU 3</a>
../view/layout/element/footer.php
Copyright © 2010 by Cheyuz
Jadi ketika file default.php dirender, maka element/header.php, element/topmenu.php, dan element/footer.php akan selalu diload. Nah, untuk pemanggil template tersebut dan yang akan digunakan di controller adalah Page Template Helper jadi rencananya kode kita yang sebelumnya:
<?php class Home extends Controller { function index() { $data['title'] = 'Webku'; $this->load->view('header'); $this->load->view('topmenu'); $this->load->view('home_view', $data); $this->load->view('footer'); } } ?>
Singkatnya, kita tidak menggunakan function $this->load->view() lagi di Controller, tetapi kita menggunakan function show() yang berfungsi sama dan meload seluruh elemen yang kita tentukan.
Sekarang, kita buat sebuah helper page_template_helper.php di /system/application/helper/ dengan kode seperti berikut:
<?php if ( ! function_exists('element')) { function show($view, $data=array(), $template='default') { $ci = &get_instance(); $data['view'] = $view; $data = $ci->load->view('layout/'.$template, $data); } } /* End of file page_template_helper.php */ /* Location: ./system/helpers/page_template_helper.php */
OK, akan Cheyuz jelaskan.. Di kode itu terlihat bahwa $view yang ada di parameter 1 di function show() ini akan dimasukkan ke dalam variable array $data, yang kemudian akan diload view yang bernama $template (diubah sesuai nama layout, defaultnya adalah default.php) dengan $data tetap dari parameter ke-2.. dan parameter ke-3 ($default) adalah nama file template yang kita buat secara default file template yang akan diload adalah ../layout/default.php. Nah, di controller Home tadi, kita dapat mengubahnya menjadi seperti ini:
<?php class Home extends Controller { function index() { $data['title'] = 'Webku'; show('home_view',$data); } function about(){ $data['title'] = 'About'; show('home_view',$data); } function other(){ $data['title'] = 'Other (layout tanpa topmenu)'; show('home_view',$data, 'other'); } } ?>
Ada function other(), yang akan memanggil halaman dengan template yang berbeda, yaitu menghilangkan topmenu.. karena kita sudah membuat helpernya, maka untuk membuat template baru untuk function other() tersebut, kita tinggal membuat file template bernama other.php di /system/application/view/layout/ dengan isi file seperti berikut:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Webku<?php echo isset ($title)?" | ".$title:'' ?></title> </head> <body> <div id="header"> <?php $this->load->view('layout/header') ?> </div> <?php // menghilangkan topmenu untuk action tertentu ?> <div id="content"> <?php $this->load->view($view) ?> </div>
Setelah semua langkah selesai, selanjutnya adalah meload helper tersebut. Karena kita akan selalu meload helper ini, maka kita atur konfigurasi autoloadnya di file
/system/application/config/autoload.php
Cecep Yus
Cianjur
Jika kita memakai cara yang di atas, maka kita harus menginputkan mahasiswa satu persatu. Bayangkan gimana kalo kita ingin menginputkan 50 data? Tentu kita harus mengisi form sebanyak 50 kali bukan? Coba lihat form berikut ini:
Form Input Mahasiswa NIM Nama Alamat
0700335 Cecep Yus Cianjur
0900634
Sabrina
Cianjur
Coba Anda lihat, apa bedanya cara pertama dengan cara kedua? keliatan kan? Nah, jadi bedanya apabila kita memakai cara kedua, kita dapat menginput beberapa siswa sekaligus. Di sini kita akan membuat 3 bagian modul, yaitu:
1. Form untuk mengisi berapa data yang akan dimasukkan 2. Form untuk pengisian form multiple 3. Daftar data yang telah dimasukkan Catatan: Diasumsikan base_url() untuk tutorial ini adalah http://localhost/webku dan index.php telah dihilangkan..
tutorial untuk menghilangkan index.php ada di sini Pertama2 buat dulu database sebagai berikut:
CREATE TABLE IF NOT EXISTS mahasiswa ( id int(5) NOT NULL AUTO_INCREMENT, `nim` varchar(20) NOT NULL,
`nama` varchar(100) NOT NULL, `alamat` text NOT NULL, PRIMARY KEY (id) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
Jangan lupa cek koneksi ke database apakah sudah benar atau belum.. konfigurasi untuk koneksi database ada di /system/application/config/database.php. Buatlah sebuah controller data_mahasiswa.php (atau Anda bisa melanjutkan tutorial dari Tutorial Dasar Part I untuk membuat controller data_mahasiswa.php dan melanjutkannya). Di controller tersebut, tambahkan function untuk membuat tampilan multiple input form:
<?php class Data_mahasiswa extends Controller { ... function add_multiple() { $this->load->view('add_multiple'); } } ?>
Setelah kamu bikin controller di atas, kamu tinggal bikin view untuk tampilan formnya, dengan cara membuat file add_multiple.php di folder /system/application/view Isikan code HTML berikut di file tersebut:
<h2>Multiple Form Input Mahasiswa</h2> <form action="" method="post"> Banyak mahasiswa yang ingin dimasukkan: <input name="banyak_data" size="3" /> orang<br /> <input type="submit" value="Lanjut" /> </form>
orang
Bottom of Form
Kemudian tambahkan code berikut untuk function add_multiple() file controller data_mahasiswa.php tadi, menjadi seperti berikut:
<?php class Data_mahasiswa extends Controller { ... //ADD MULTIPLE function add_multiple() { if($_POST==NULL) { $this->load->view('add_multiple'); }else{ redirect('data_mahasiswa/add_multiple_post/'. $_POST['banyak_data']); } }
} ?>
Maksud dari function di atas adalah meload view add_multiple.php yang berisi halaman input banyak data mahasiswa yang dimasukkan.. kemudian ketika disubmit (POST) maka akan di-redirect/alihkan ke function add_multiple_post() dengan parameter banyaknya data yg dimasukkan ($_POST['banyak_data']) yang akan kita buat nanti yaitu halaman munculnya multiple form. Tambahkan function berikut di bawah function add_multiple():
class Data_mahasiswa extends Controller { ... function add_multiple_post($banyak_data=0) { $data['banyak_data'] = $banyak_data; $this->load->view('add_multiple_form',$data); } }
Kemudian, buatlah tampilan multiple form input seperti gambar table di atas. Berikut ini adalah kode HTML dari add_multiple_form.php, simpan di /system/application/views:
<h2>Multiple Form Input Mahasiswa</h2> <form action="" method="post"> <table> <tr> <td>NIM</td> <td>Nama</td> <td>Alamat</td> </tr> <?php for($i=1;$i<=$banyak_data;$i++): ?> <tr> <td><input name="data[<?php echo $i ?>][nim]" /></td> <td><input name="data[<?php echo $i ?>][nama]" /></td> <td><input name="data[<?php echo $i ?>][alamat]" /></td> </tr> <?php endfor ?> </table> <input type="submit" value="simpan" /> </form> http://localhost/webku/data_mahasiswa/add_multiple_post/3
No NIM 1 2 3
Nama
Alamat
Bottom of Form
http://localhost/webku/data_mahasiswa/add_multiple_post/5
No NIM 1 2 3 4 5
Nama
Alamat
Bottom of Form
Kemudian, tambahkan if dan foreach di function add_multiple_post tadi, fungsinya adalah untuk mengetahui apakah form udah disubmit atau belum jadi kode PHP lengkapnya sbb:
<?php class Data_mahasiswa extends Controller { ... function add_multiple_post($banyak_data=0) { if($_POST==NULL) { $data['banyak_data'] = $banyak_data; $this->load->view('add_multiple_form',$data); }else { foreach($_POST['data'] as $d){ $this->db->insert('mahasiswa',$d); } redirect('data_mahasiswa/lihat_data'); } } } ?>
Nah, sekarang kita tinggal bikin daftar data mahasiswa yang sudah dimasukkan.. Caranya, buat file list_mahasiswa.php di /system/application/views/ dengan isi sebagai berikut: list_mahasiswa.php:
<h2>Daftar Mahasiswa</h2> <table> <tr> <th>No</th> <th>NIM</th> <th>Nama</th> <th>Alamat</th> </tr> <?php $i = 0 ?> <?php foreach($mahasiswa as $m): ?> <tr> <td><?php echo $i++ ?></td> <td><?php echo $m->nim ?></td> <td><?php echo $m->nama ?></td> <td><?php echo $m->alamat ?></td> </tr> <?php endforeach ?> </table> <?php echo anchor('data_mahasiswa/add_multiple','Tambah Data') ?>
} ?>
} function lihat_data(){ $data['mahasiswa'] = $this->db->get('mahasiswa')->result(); $this->load->view('list_mahasiswa',$data); } } /system/application/views/add_multiple.php <h2>Multiple Form Input Mahasiswa</h2> <form action="" method="post"> Banyak mahasiswa yang ingin dimasukkan: <input name="banyak_data" size="3" /> orang<br /> <input type="submit" value="Lanjut" /> </form> /system/application/views/add_multiple_form.php <h2>Multiple Form Input Mahasiswa</h2> <form action="" method="post"> <table> <tr> <td>No</td> <td>NIM</td> <td>Nama</td> <td>Alamat</td> </tr> <?php for($i=1;$i<=$banyak_data;$i++): ?> <tr> <td><?php echo $i ?></td> <td><input name="data[<?php echo $i ?>][nim]" /></td> <td><input name="data[<?php echo $i ?>][nama]" /></td> <td><input name="data[<?php echo $i ?>][alamat]" /></td> </tr> <?php endfor ?> </table> <input type="submit" value="simpan" /> </form> /system/application/views/list_mahasiswa.php <h2>Daftar Mahasiswa</h2> <table> <tr> <th>No</th> <th>NIM</th> <th>Nama</th> <th>Alamat</th> </tr> <?php $i = 0 ?> <?php foreach($mahasiswa as $m): ?> <tr> <td><?php echo $i++ ?></td> <td><?php echo $m->nim ?></td> <td><?php echo $m->nama ?></td> <td><?php echo $m->alamat ?></td>
</tr> <?php endforeach ?> </table> <?php echo anchor('data_mahasiswa/add_multiple','Tambah Data') ?>
Untuk contoh file nya klik link Download yang ada di bawah ini.. DOWNLOAD
Silakan copy SQL berikut untuk membuat table bukutamu dan memasukkan datanya:
CREATE TABLE IF NOT EXISTS `bukutamu` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `nama` VARCHAR(100) NOT NULL, `email` VARCHAR(100) NOT NULL, `pesan` text NOT NULL, `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ; --- Dumping data for table `bukutamu` -INSERT INTO `bukutamu` (`id`, `nama`, `email`, `pesan`, `created`) VALUES (1, 'Albert Einstein', 'albert2007@yahoo.com', 'Konten yang sangat menarik dan membantu saya dalam pemrograman web.. ;)', '2010-10-23 09:06:12'), (2, 'Sabrina', 'sabrina@yahoo.com', 'Like this, web yang sangat membantu saya.. :)', '2010-10-23 20:58:01'), (3, 'zakky', 'zakky@yahoo.com', 'keren bos.. webnya sangat membantu.. ', '2010-10-23 21:22:37'), (4, 'Bernand Simamora', 'bernand_cute@yahoo.com', 'Web Tutorial yang sangat bagus, nilai 100 dari saya.. Silakan kembangkan lebih jauh bakat Anda dalam pemrograman Web ;)', '2010-10-24 08:16:47'), (5, 'Robert Dawn', 'robert@gmail.com', 'That''s good man!', '2010-10-24 08:16:47'), (6, 'Rizal Juned', 'juned@yahoo.com', 'bisaan euy, ajarkeun lah.... keren2 wae blogna mah... :D', '2010-10-24 08:18:05'), (7, 'Andi Maulana', 'andimaulana@gmail.com', 'Good luck!', '2010-10-24 08:18:05'), (8, 'Pak Lurah', 'naonwae@yahoo.com', 'Tutorialnya tambahin lagi dunk gan... :)', '2010-10-24 08:20:59'), (9, 'Luna Apridola', 'luna_cute@gmail.com', 'bagus bgt tutorialnya!!! thankzz', '2010-10-24 08:20:59');
Setelah table dan data terbentuk, maka sekarang tinggal dibuat modelnya di CI
/system/application/models/bukutamu_model.php
<?php /** * Description of bukutamu_model * * @author cheyuz */ class Bukutamu_Model extends Model { function __construct() { parent::Model(); } function get($limit = array()) { if ($limit == NULL) return $this->db->get('bukutamu')->result(); else return $this->db->limit($limit['perpage'], $limit['offset'])>get('bukutamu')->result(); } } ?>
Function get() yang ada dalam model tersebut adalah untuk mengambil semua data yang ada di table bukutamu, dengan parameter $limit yang nantinya akan kita pergunakan untuk pagination. Jika $limit tidak diisi, maka data akan ditampilkan semuanya. OK, setelah model sudah dibuat, maka langkah selanjutnya adalah membuat Controller.
/system/application/controllers/bukutamu.php <?php /** * Description of bukutamu * * @author cheyuz */ class BukuTamu extends Controller { function __construct() { parent::Controller(); $this->load->helper('url'); //load helper URL untuk memanggil function base_url() $this->load->model('bukutamu_model'); } function index($offset = 1) { //tentukan jumlah data per halaman $perpage = 3; //load library pagination $this->load->library('pagination');
//untuk konfigurasi pagination $config = array( 'base_url' => base_url() . 'bukutamu/index/', 'total_rows' => count($this->bukutamu_model->get()), 'per_page' => $perpage, ); //inisialisasi pagination dn config di atas $this->pagination->initialize($config); $data['bukutamu'] = $this->bukutamu_model->get(array('perpage' => $perpage, 'offset' => $offset)); //tampilkan data $this->load->view('bukutamu_view', $data); } } ?>
Untuk memanggil function base_url(), Anda harus meload terlebih dahulu URL Helper (di atas sudah diload di constructor). Base_url() adalah function untuk mengambil string web root kita, misalnya http://localhost/webku. OK, untuk konfigurasi Pagination akan saya jelaskan satu2:
1. base_url: adalah url di mana action untuk memanggil bukutamu ini, karena di sini
2. total_rows: adalah total data, yaitu semua data buku tamu yang diambil dari function
get() di bukutamu_model
3. per_page: adalah jumlah data perhalaman, kita set menjadi 3
Banyak sekali konfigurasi yang dapat kita atur di library pagination, dan konfigurasi itu sendiri bisa disimpan di folder /system/config/pagination.php, jadi Anda tidak usah mengeset konfigurasi lagi di setiap Controller. Parameter $offset sangat diperlukan karena untuk menentukan limit dan offset untuk menampilkan isi data di setiap halaman
Silakan jalankan aplikasi Anda di browser udah? lho, lho, data kok cuman tampil 3? Iya, emang seperti itu, hanya saja kita belum menampilkan link paginationnya. Untuk menampilkannya, tambahkan kode php berikut ini:
<?php echo $this->pagination->create_links(); ?>
<?php foreach ($bukutamu as $bt): ?> <div> <div><b><?php echo $bt->nama ?></b></div> <span><?php echo $bt->email ?></span> <p><?php echo $bt->pesan ?></p> </div> <hr /> <?php endforeach; ?> <?php echo $this->pagination->create_links(); ?>
Silakan jalankan browser Anda Jika Anda mengikuti tutorial dengan benar, Anda akan melihat link Pagination di bawah daftar bukutamu.. Untuk memanipulasi tampilan pagination, silakan ikuti cara saya berikut: Buatlah file pagination.php di dalam direktori /system/application/config, kemudian tambahkan baris konfigurasi berikut:
<?php $config['full_tag_open'] = '<div class="pagination">'; $config['full_tag_close'] = '</div>'; $config['next_link'] = 'Lanjut »'; $config['prev_link'] = '« Kembali'; $config['num_tag_open'] = '<div class="digit">'; $config['num_tag_close'] = '</div>'; $config['cur_tag_open'] = '<div class="digit current">'; $config['cur_tag_close'] = '</div>'; $config['num_links'] = 1; $config['last_link'] = '<b>Terakhir ›</b>'; $config['first_link'] = '<b>‹ Pertama</b>'; ?>
maka tampilannya akan berubah menjadi seperti berikut: 1 2 3 4 Lanjut Terakhir Selamat mencoba! Go Web Developer Indonesia!!!
HMVC singkatan dari Hierarchical-Model-View-Controller, yang artinya pola MVC tetapi berupa Hirarki. Hampir sama dengan MVC, hanya saja di sini MVC tersebut disimpan di dalam banyak modul, jadi setiap modul terdapat Model, View, dan Controller. Nah, selain framework lain seperti Kohana, Zend, dan lain-lain, kita juga dapat menerapkan pola seperti ini di dalam Framework Codeigniter, caranya yaitu dengan menggunakan Modular Extensions, yang dapat Anda load di sini
Instalasi 1. Download modular extensions CI di sini. 2. Di dalamnya, terdapat 3 buah file, yaitu:
MY_Router.php Modules.php Controller.php
4. Buatlah folder modules di dalam /system/application, sehingga terdapat folder baru dengan path: /system/application/modules
Controller disimpan di dalam folder modules/nama_controller. Jadi, buatlah folder baru sebagai nama modul di dalam modules, misalnya bukutamu. Kemudian, buatlah folder baru bernama controllers dan simpan di dalam folder /system/application/modules/bukutamu/. Buatlah nama controller yang akan Anda buat, misalnya bukutamu.php dan simpan di dalam folder controllers yang ada di dalam folder bukutamu.
Kita tidak akan menggunakan folder controllers bawaan dari CI yang ada di folder /system/application/controllers, tetapi kita menggunakan controllers yg ada di dalam masing-masing modul yang ada di dalam folder modules, untuk kasus ini, controller bernama bukutamu.php disimpan di dalam path:
/system/application/modules/bukutamu/controllers/
Begitu juga untuk model dan view, bahkan untuk modul yg berbeda, Anda simpan semua file di dalam masing2 folder dengan nama modul Anda, dan disimpan di dalam folder modules. sehingga setiap modul mempunyai MVC (Model, View, dan Controller)
Contoh
Untuk contoh, kita bisa ambil studi kasus untuk controller User.
Controller: user.php
<?php class User extends Controller {
function __construct() { parent::Controller(); } function index() { $this->load->view('user/user_view'); } // ... //............. Kode program Anda // ... } ?>
Model: user_model.php
<?php class User_model extends Model { function __construct() { parent::Model(); } // ... //............. Kode program Anda // ... } ?>
View: user_view.php
Ini adalah view untuk user
Catatan: Untuk penamaan file model dan view, tidak harus user_model.php atau user_view.php, itu sesuai dengan style programming Anda, Anda dapat juga menggunakan nama ini misalnya model: m_user.php dengan view: index.php. Itu tergantung style coding Anda
Berikut ini contoh struktur path dengan menggunakan modules: /system/application/modules/user/controllers/user.php /system/application/modules/user/models/user_model.php /system/application/modules/user/views/user_view.php /system/application/modules/content/controllers/content.php /system/application/modules/content/models/content_model.php /system/application/modules/content/views/content_view.php
Jika model berada di luar module, maka strukturnya adalah sperti berikut:
Kelebihan dari HMVC yaitu program menjadi modular, yang artinya programmer dapat mengerjakan masing2 module tanpa mengganggu direktori yang sedang orang lain kerjakan. Kedua, jika misalnya kita ingin menggabungkan hasil kerjaan kita dengan orang lain maka sangat mudah, karena kita tinggal mengkopi modul kita ke direktori modules di komputer master, sehingga dengan cara seperti ini kita tidak kesulitan dalam menangani konflik file yang sedang sama-sama diedit (misalnya mengedit folder controller secara bersamaan). Banyak kasus yang dapat dipermudah dengan menggunakan HMVC
//code
Kemudian, langkah pertama yang harus dilakukan adalah meload helper Form dan library form_validation yang sudah disediakan oleh Codeigniter ke dalam controller kita, caranya tambahkan kode $this->load->helper('form') $this->load>library('form_validation') di dalam function __construct() , jadi sekarang code di dalam __construct menjadi seperti ini:
... function __construct() { parent::Controller(); $this->load->helper('form'); $this->load->library('form_validation'); } ...
Sejauh ini Anda sudah menggunakan library Form Validation, sekarang tinggal buat function index() di dalam controller supaya kita bisa mengakses di dalam URL dengan bentuk seperti ini: http://localhost/webku/registrasi. Tambahkan function index() setelah function __construct() dibuat.. jadi kode lengkapnya seperti ini:
<?php /** * @author cheyuz */ class Registrasi extends Controller { function __construct() { parent::Controller(); $this->load->helper('form'); $this->load->library('form_validation'); } function index() { } }
kemudian, buatlah view di dalam folder /system/application/views/ dengan nama: registrasi_view.php yang isinya berupa html form sebagai berikut:
<h2>Registrasi</h2> <?php echo form_open('registrasi') ?> <table> <tr> <td>Nama depan</td> <td><?php echo form_input('nama_depan') ?></td> </tr> <tr> <td>Nama belakang</td> <td><?php echo form_input('nama_belakang') ?></td> </tr>
<td>Alamat</td> <td><?php echo form_textarea('alamat') ?></td> </tr> <tr> <td>E-Mail</td> <td><?php echo form_input('email') ?></td> </tr> <tr> <td>No Telepon</td> <td><?php echo form_input('no_telepon') ?></td> </tr> <tr> <td>Pekerjaan</td> <td><?php echo form_input('pekerjaan') ?></td> </tr> <tr> <td>Username</td> <td><?php echo form_input('username') ?></td> </tr> <tr> <td>Password</td> <td><?php echo form_password('password') ?></td> </tr> <tr> <td>Konfirmasi Password</td> <td><?php echo form_password('konfirmasi_password') ?></td> </tr> <tr> <td></td> <td><?php echo form_submit('daftar','Daftar') ?></td> </tr> </table> <?php echo form_close() ?>
<tr>
Setelah view dibuat, baru kita tambahkan kode untuk meload view tersebut, yaitu: $this>load->view('registrasi'); ini kita simpan di function index(). Setelah itu, kita buat aturan untuk validation tadi, caranya yaitu dengan menambahkan array berupa rules2 tadi dengan bentuk seperti berikut:
$rules = array( array( 'field' 'label' 'rules' => [nama input field] => [label] => [aturan]
),
Jadi, secara lengkap buatlah $rules tersebut sebelum view diload, lengkapnya seperti berikut:
... $rules= array( array( 'field' => 'nama_depan', 'label' => 'Nama Depan', 'rules' => 'required' ), array(
), array( 'field' => 'email', 'label' => 'E-Mail', 'rules' => 'required|valid_email' ), array( 'field' => 'no_telepon', 'label' => 'No Telepon', 'rules' => 'numeric' ), array( 'field' => 'username', 'label' => 'Username', 'rules' => 'required|min_length[6]' ), array( 'field' => 'password', 'label' => 'Password', 'rules' => 'required|min_length[6]| matches[konfirmasi_password]' ), array( 'field' => 'konfirmasi_password', 'label' => 'Konfirmasi Password', 'rules' => 'required' ), ); $this->form_validation->set_rules($rules); ...
Setelah itu, ada pengecekan apakah data sudah dikirim atau belum dengan cara memakai if, kodenya seperti berikut:
if ($this->form_validation->run() == FALSE) { //jika belum dikirim/belum valid, masukkan kode di sini } else { //jika sudah valid, masukkan kode INSERT di sini }
Di atas ada pengecekan jika belum dikirim/belum valid, di dalam bagian itu pindahkan kode $this->load->view('registrasi'); ke dalam statemen ini. Jadi, jika kita lihat, code lengkapnya seperti ini:
function index() { $rules = array( array( 'field' 'label' 'rules' ), array( 'field' 'label' 'rules'
=> 'nama_depan', => 'Nama Depan', => 'required' => 'alamat', => 'Alamat', => 'required'
), array( 'field' => 'email', 'label' => 'E-Mail', 'rules' => 'required|valid_email' ), array( 'field' => 'no_telepon', 'label' => 'No Telepon', 'rules' => 'numeric' ), array( 'field' => 'username', 'label' => 'Username', 'rules' => 'required|min_length[6]' ), array( 'field' => 'password', 'label' => 'Password', 'rules' => 'required|min_length[6]| matches[konfirmasi_password]' ), array( 'field' => 'konfirmasi_password', 'label' => 'Konfirmasi Password', 'rules' => 'required' ), ); $this->form_validation->set_rules($rules); if ($this->form_validation->run() == FALSE) { $this->load->view('registrasi'); } else { echo 'Data berhasil dimasukkan'; //kode insert ke database di model--> contoh: $this>registrasi_model->insert(); } }
Kode di Controller sudah selesai, kini Anda tinggal buat daftar error dari validation di view, caranya yaitu dengan menambahkan kode di bawah sebelum tag form..
<h2>Registrasi</h2> <?php echo validation_errors(); ?> <?php echo form_open('registrasi') ?> <table> ... ...
Tutorial selesai. Kini Validasi Form Anda siap digunakan, untuk mencobanya silakan kosongkan atau salahkan isi inputan Anda, kemudian submit! Jika data sudah benar, maka muncul tulisan Data sudah dimasukkan. Jika data masih salah, maka browser akan menampilkan form kembali dan menampilkan error yang ada dalam kesalahan inputan. Selain itu, Anda bisa membuat rules di dalam config Anda, caranya buatlah sebuah file bernama form_validation.php di dalam /system/application/config/ dengan isi sebuah variable $config (HARUS $config) yg isinya adalah array rules yang sudah kita buat tadi.
form_validation.php
<?php $config = array( array( 'field' => 'label' => 'rules' => ), array( 'field' => 'label' => 'rules' => ),
Dan hapus kode $this->form_validation->set_rules($rules); di controller (jika memakai config itu). Dengan demikian, code di Controller akan lebih sedikit dari sebelumnya.