Bekerja dengan MVC Model Kelas menyimpan proses bisnis Views Berhubungan dengan input dan ouput Controller Penyimpanan ke database Menguhubungkan antara model dan ke view Gii Controller Generator Menciptakan Controller dan view tanpa model Nama Controller bisa ditentukan sendiri Hanya menampilkan view secara statis Tidak melibatkan proses dalam model Secara default membentuk actionindex() dan membentuk view index 1
Contoh: Nama controller File controller/pepatahcontroller.php class PepatahController extends Controller public function actionindex() $this->render('index');..?> Memanggil views/pepatah/index.php 2
File views/pepatah/index.php /* @var $this PepatahController */ $this->breadcrumbs=array('pepatah',);?> <h1> echo 'Id Controller '. $this->id. ' /memanggil aksi :'. $this->action->id;?> </h1> <p>terdapat dalam folder <tt> echo FILE ;?></tt>.</p> View pepatah/index Nama view Id Controller 3
Menambahkan action Buka file PepatahController.php public function actionkatabijak() $this->render('katabijak'); Buat File Baru katabijak.php Simpan ke views/pepatah/ echo "<h1> Rajin Pangkal Pandai</h1>";?> Hasil Pengujian http://localhost/web_mi1/index.php?r=pepatah/katabijak 4
http://localhost/web_mi1/index.php?r=pepatah/katabijak Id Controoler Views katabijak.php Controller PepatahController.php public function actionkatabijak() $this->render('katabijak'); Menambahkan Model class Kata public $katanya; public function setkatanya($apaya) $this->katanya=$apaya; public function getkatanya()?> return $this->katanya; 5
Tambahkan action..? bagian Controller public function actionkatabijak2() $model = new Kata; $this->render('katabijak2', array('model'=>$model)); Tambah file view katabijak2.php $model->setkatanya('sedikit Demi Sedikit Lama-lama Menjadi Bukit'); echo "<h1>". $model->getkatanya()."</h1>";?> 6
Model Kelas Model dalam apalikasi Yii-based diletakkan dalam folder../protected/models/. File-file model tersebut disampan dengan nama file bereksensi.php. Model perluasan dari kelas CModel juga digunakan oleh sub kelas CFormModel, dan CActiveRecord, Penulisan Model class NamaKelas extend CFormModel //atribut public $atribut_1; public $atribut_2; public $atribut_3;.. //methode public funtion rules().. Variabel/properti dalam model methode untuk menegisikan aturan validasi masukan public function attributelabels() methode untuk menegisikan label pada isian masing atribut pada form masukkan 7
Contoh kelas Kotak(1): class Kotak extends CFormModel public $panjang; public $lebar; Properti $panjang, $lebar // validasi public function rules() return array( methode rules() Validasi isi panjang, dan lebar tidak boleh kosong array('panjang, lebar','numerical', 'integeronly'=>true)); lanjut-> Validasi isi panjang, dan lebar hanya berisi nilai bertipe integer Contoh kelas Kotak(2):.. public function attributelabels() return array( 'panjang'=>'panjang Kotak', 'lebar'=>'lebar Kotak',); public function luas() return $this->panjang * $this->lebar; public function keliling() return 2*($this->panjang+$this->lebar); 8
Input kotak dengan form View (form) echo $form->labelex($model,'panjang');?> echo $form->textfield($model,'panjang');?> Di model attributelabels() : 'panjang'=>'panjang Kotak', Di model validasi rules() : array('panjang, lebar', 'required'), Dosen : Badiyanto, S.Kom., Kembali M.Kom Controller (1) class KotakController extends Controller public function actionindex() $this->render('index'); public function actionform() $model=new Kotak; $model->unsetattributes(); if(isset($_post['kotak'])) $model->attributes= $_POST['Kotak']; $panjang = $_POST['Kotak']['panjang']; $lebar = $_POST['Kotak']['lebar']; $this->redirect(array('luas', 'panjang'=>$panjang,'lebar'=>$lebar)); $this->render('form',array('model'=>$model,)); Untuk memanggil view methode ection Meciptakan kelas instan dengan nama $model Memperoleh nilai input dari form Setelah memasukkan data memanggil view luas dengan menyertakan nilai panjang dan lebar 9
Controller (2).. public function actionluas() $model=new Kotak; $model->unsetattributes if(isset($_get['kotak'])) $model->attributes=$_get['kotak']; $this->render('luas',array('model'=>$model, )); actionluas() $this->render( luas,..) Views luas.php http://localhost/test/index.php?r=kotak/luas&panjang=10&lebar=20 <br> $model->panjang = $_GET["panjang"]; $model->lebar = $_GET["lebar"]; echo "Panjang ". $model->panjang; echo "<br>"; echo "Lebar ". $model->lebar; echo "<br>"; echo "Luas ". $model->luas(); echo "<br>"; echo "Keliling ". $model->keliling();?> Kembali 10