Selasa, 17 Juli 2012

Membuat Form Dengan Teknik MVC

Di dalam aplikasi dengan menggunakan MVC, maka kita dianjurkan untuk dapat memilah bagian-bagian dari program yang dibuat menjadi setidaknya 3 file, controller, view, dan model. Jangan sampai semua kode hanya ada di dalam controller, jika terjadi demikian, maka apa bedanya program yang dihasilkan dengan framework dengan yang tidak?

Kita akan membuat secara bertahap, memilah contoh pembuatan form pada tulisan sebelumnya dengan menggunakan model dan view.

Contoh membuat form komentar yang menggunakan hanya satu file controller saja, ditunjukkan seperti berikut:


<?php
class C_formkomentar extends CI_Controller{
function __construct(){
parent::__construct();
$this->load->helper("form");
}
function index(){
$aksi="simpankomentar";
$namapengunjung=array(
 "name"=>"namapengunjung"
 ,"size"=>"50"
 ,"maxlength"=>"100"
);
$email=array(
 "name"=>"email"
 ,"size"=>"50"
 ,"maxlength"=>"100"
);
$komentar=array(
 "name"=>"komentar"
 ,"rows"=>"5"
 ,"cols"=>"40"
);
echo form_open($aksi);
echo form_label("Nama : ").form_input($namapengunjung);
echo br();
echo form_label("Email : ").form_input($email);
echo br();
echo form_label("Komentar : ").form_textarea($komentar);
echo br();
echo form_close();
}
}
?>


Program untuk menampilkan form di atas, menggunakan satu file saja, yaitu controller. Suatu controller seharusnya tidak panjang programnya seperti di atas, karena kita belum menggunakan teknik pemrograman dengan MVC.

Kita harus membuat sebuah file model untuk mendefinisikan elemen form dan sebuah view untuk menampilkannya, menjadi seperti berikut:

Isi file model m_formkomentar.php:


<?php
class M_formkomentar extends CI_Model{
function formelemen(){
$aksi="simpankomentar";
$namapengunjung=array(
 "name"=>"namapengunjung"
 ,"size"=>"50"
 ,"maxlength"=>"100"
);
$email=array(
 "name"=>"email"
 ,"size"=>"50"
 ,"maxlength"=>"100"
);
$komentar=array(
 "name"=>"komentar"
 ,"rows"=>"5"
 ,"cols"=>"40"
);
return array(
"aksi"=>$aksi
,"namapengunjung"=>$namapengunjung
,"email"=>$email
,"komentar"=>$komentar
)
}
}
?>


Isi file view v_formkomentar.php:


<?php
echo form_open($aksi);
echo form_label("Nama : ").form_input($namapengunjung);
echo br();
echo form_label("Email : ").form_input($email);
echo br();
echo form_label("Komentar : ").form_textarea($komentar);
echo br();
echo form_close();
?>


Isi file view v_formkomentar ini hanya merupakan penyederhanaan contoh, kita harus memberikan kode HTML tambahan agar dapat ditampilkan dengan lebih baik.

Setelah kita membuat model dan viewnya, maka kita harus memperbaiki file controllernya menjadi seperti berikut:


Isi file controller c_formkomentar.php:


<?php
class C_formkomentar extends CI_Controller{
function __construct(){
parent::__construct();
$this->load->helper();
}
function index(){
$this->load->model("m_formkomentar");
$data=$this->m_formkomentar->formelemen();
$this->load->view("v_formkomentar",$data);
}
}
?>


Program controller yang dibuat menjadi lebih sederhana dan ringkas. Dampaknya adalah kita bisa mendefinisikan elemen form tambahan di dalam file model, tanpa perlu khawatir mengubah logika program, dan mengubah tampilannya dengan mengubah file view.

Tidak ada komentar:

Posting Komentar