protected/views/layouts/main.php adalah template view setiap halaman dalam aplikasi.
pageTitle); ?>
Nilai pageTitle berisi nama aplikasi (didefinisikan dalam file protected\config\main.php) Method CHtml::encode() digunakan hanya untuk melindungi dari serangan CrossSite Scripting (XSS)
name); ?>
Yii::app()->name adalah nama aplikasi Web (file protected/config/main.php) widget('zii.widgets.CMenu',array(...
Default layout menggunakan widget. Widget adalah cara untuk menyertakan sekelompok kode PHP dalam View menggunakan file eksternal. Widget CMenu disini digunakan untuk membuat menu. Default layout juga menggunakan widget CBreadcrumbs
$content adalah konten halaman spesifik yang dapat dimasukkan ke layout Kode didalam protected/controllers/MahasiswaController.php: public function actionView($id) { $this->render('view',array( 'model'=>$this->loadModel($id), )); }
dipanggil dari pemanggiolan URL: localhost/app1/index.php? r=mahasiswa/view&id= 103110001. Method loadModel () dari kelas Controller ini melakukan pengambilan Model yang sebenarnya. Bagian $this->render() akan merender view (protected/views/mahasiswa/ view.php). view.php menggunakan zii.widgets.CDetailView untuk menampilkan detil mahasiswa:
widget('zii.widgets.CDetailView', array( 'data'=>$model, 'attributes'=>array( 'nim', 'nama', 'alamat', ), )); ?>
Anda dapat dengan mudah memiliki layout yang berbeda untuk bagian yang berbeda dari aplikasi. Ubah nilai layout sebelum merender view. Berikan nama file layout, tanpa ekstensi. Kode berikut ini mengatakan untuk menggunakan protected/views/layouts/ home.php untuk action index: class SiteController extends CController {... public function actionIndex() {... $this->layout = 'home'; ...
$this->layout di dalam method sama dengan public $layout di luar method. class EmployeeController extends Controller { public $layout='//layouts/column2';
View index dan admin menampilkan semua record dalam Model, menggunakan Zii widgets. index.php menggunakan CListView widget, dengan menggunakan skrip _view.php sebagai template. widget('zii.widgets.CListView', array( 'dataProvider'=>$dataProvider, 'itemView'=>'_view', )); ?>
Daftar record dapat diubah tampilannya dengan cara meng-edit baik _view.php atau CListView dikonfigurasi (dalam index.php). Dalam index.php: widget('zii.widgets.CListView', array( 'dataProvider'=>$dataProvider, 'itemView'=>'_view', )); ?>
Dalam _view.php
getAttributeLabel('nim')); ?>: nim), array('view', 'id'=>$data->nim)); ?>
getAttributeLabel('nama')); ?>: nama); ?>
getAttributeLabel('alamat')); ?>: alamat; ?>
Hasil:
View create dan update memiliki beberapa header halaman, kemudian memasukkan View form, menggunakan kode ini: renderPartial('_form', array('model'=>$model)); ? >
Secara default, form-form yang dihasilkan oleh Gii mencakup elemen-elemen untuk setiap atribut Model, menyimpan untuk primary key. Tapi beberapa field, seperti tanggal dibuat atau dimodifikasi, dapat secara otomatis diisi dengan timestamps, oleh karena itu tidak dimasukkan oleh pengguna. Dan, dengan Model terkait, seperti Mahasiswa dan Jurusan, Anda akan membutuhkan menu drop-down dalam hal untuk memilih nilai dari yang lain, seperti memilih jurusan apa seorang
mahasiswa masuk. Kode Yii yang dihasilkan tidak akan melakukan ini untuk Anda, formulir hanya akan memiliki kolom teks yang dibuat oleh kode ini: textField($model,'nim', array('size'=>9, 'maxlength'=>9)); ?>
Variabel $form adalah objek bertipe CActiveForm. Metode textField() menciptakan input teks. Argumen pertama mengatakan bahwa input harus berupa objek $model (model yang datang dari Controller). Argumen kedua mengidentifikasi properti di Model. Argumen ketiga berkaitan dengan ukuran input text yang terbentuk. Untuk menciptakan drop-down yang berkaitan dengan Model lain, anda dapat mengganti dengan kode berikut: dropDownList($model,'jurusan', CHtml::listData(Jurusan::model()->findAll(), 'id', 'nama')); ?>
Catatan: kode ini ditulis di file _form.php Method dropDownList dari objek $form akan menciptakan drop-down list. Anda perlu mengikatkannya ke Model yang sesuai, jadi argumen pertama adalah $model, Argumen kedua adalah nama dari field form / field Model: disini, field jurusan dalam Model Mahasiswa. Selanjunya, anda perlu sediakan method method dengan daftar nilai untuk digunakan ke menu drop-down, yang dilakukan dengan memanggil CHtml::listData(). Method ini menghasilkan daftar nilai yang digunakan dalam menu drop down. Sehingga sumber data adalah dari daftar Jurusan. Untuk memperoleh semua record dalam Model: NamaModel::model()->findAll(). Dua buah argumen dalam method CHtml::listData() adalah field untuk digunakan sebagai nilai menu drop down dan teks yang ditampilkan. Sehingga argumennya berisi id dan nama. Contoh sebelum diubah (?r=mahasiswa/create)
Setelah diubah menjadi: