Hargi-Belajar PHP Yii Framework PDF
Hargi-Belajar PHP Yii Framework PDF
A. PENDAHULUAN
PHP merupakan singkatan rekursif (akronim berulang) dari PHP Hypertext Preprocessor. PHP
adalah bahasa pemrograman script yang paling banyak dipakai saat ini atau dalam kata lain bisa
diartikan sebuah bahasa pemrograman web yang bekerja di sisi server (server side scripting)
yang dapat melakukan konektifitas pada database yang di mana hal itu tidak dapat dilakukan
hanya dengan menggunakan sintaks‐sintaks HTML biasa.
Konsep MVC adalah cara pandang membuat aplikasi web-based dengan memisahkan
antara data (Model), tampilan (View) dan cara pemrosesan (Controller).
Dimana Mendapatkan Yii?
Download file di http://www.yiiframework.com/ release terakhir ketika tutorial ini ditulis
adalah versi 1.1 dengan nama file yii‐1.1.10.r3566.tar.gz
Komunitas eLearning IlmuKomputer.Com 1
Copyright © 2008‐2012 IlmuKomputer.Com
MEMBUAT APLIKASI WEB‐BASED DENGAN YII
Komunitas eLearning IlmuKomputer.Com 2
Copyright © 2008‐2012 IlmuKomputer.Com
yang berhungan dengan training, buka browser lalu ketikkan http://localhost/phpmyadmin,
buat database baru dengan nama aplikasikudb, buat 4 tabel dengan ketentuan sebagai
berikut:
1. Table user dengan 4 field yaitu sebagai berikut:
a. iduser, int(11)
b. username, varchar(45)
c. password, varchar(45)
d. name varchar(45)
2. Table category dengan 2 field yaitu sebagai berikut:
a. idcategory, int(11)
b. category_name, varchar(45)
3. Table training dengan 5 field yaitu sebagai berikut:
a. idtraining, int(11)
b. name_training, varchar(45)
c. hours, varchar(45)
d. time_start, (time)
e. time_end, (time)
4. Table participant dengan 3 field yaitu sebagai berikut:
a. idparticipant, int(11)
b. name_participant, varchar(45)
c. nip, bigint(18)
dengan gambar EER sebagai berikut:
Komunitas eLearning IlmuKomputer.Com 3
Copyright © 2008‐2012 IlmuKomputer.Com
Berikut script mysql nya:
Komunitas eLearning IlmuKomputer.Com 4
Copyright © 2008‐2012 IlmuKomputer.Com
Komunitas eLearning IlmuKomputer.Com 5
Copyright © 2008‐2012 IlmuKomputer.Com
Pertama Klik pada Model Generator, pastikan anda ingat nama 4 tabel di database kita,
isikan Table Name dengan nama tabel kita, isikan nama Model Class dengan nama tabel
kita dengan huruf awal kapital klik Preview, Klik Generate. Ulangi untuk 3 tabel kita
Kedua Klik pada Crud Generator, isikan Model Class dengan nilai pada step Pertama tadi,
yaitu nama tabel dengan huruf awal kapital. Klik preview lalu Generate. Ulangi untuk 3
Model Class lainnya.
Selamat, kini kita telah mempunyai
4 file Model di dalam folder models, berekstensi php
4 file Controller di dalam folder controllers, berekstensi php
4 folder View di dalam folder views
Semuanya ada di dalam folder C:\xampp\htdocs\aplikasiku\protected. Kita akan fokus pada
folder di dalam protected ya. Jika ada kesalahan pastikan anda telah benar melakukan
generate Model Generator dan Crud Generator
Referensi:
Komunitas eLearning IlmuKomputer.Com 6
Copyright © 2008‐2012 IlmuKomputer.Com
Ubah menjadi seperti berikut:
<div id="mainmenu">
<?php $this->widget('zii.widgets.CMenu',array(
'items'=>array(
array('label'=>'Home',
'url'=>array('/site/index')),
array('label'=>'Kelola Diklat',
'url'=>array('/category/index')),
Hasilnya memberikan link Kelola Diklat dengan tampilan (view) adalah category/index.php.
ke dalam Menu.
Komunitas eLearning IlmuKomputer.Com 7
Copyright © 2008‐2012 IlmuKomputer.Com
public function actionCreate($id)
{
$model=new Training;
if(isset($_POST['Training']))
{
$model->attributes=$_POST['Training'];
$model->categoryid=$id;
if($model->save())
$this->redirect(array('view','id'=>$model-
>idtraining));
}
$this->render('create',array(
'model'=>$model,
));
}
Dengan kode ini, orang yang akan menambah diklat baru, harus melewati langkah
mengeklik nama kategori dahulu. Ini bermanfaat supaya tidak ada diklat dibuat
tanpa kategori sama sekali.
2) Sekarang saatnya membuat link Menambah Diklat pada view Category. Masuk ke
folder view dari kategori lalu buka file view.php tambahkan kode dibawah ini :
<?php
$this->menu=array(
array('label'=>'Tambah Diklat Baru',
'url'=>array('training/create','id'=>$model->idcategory )),);
?>
3) Ubah juga view dari _form.php dari Training, hilangkan field Categoryid atau untuk
amannya uncheck dengan //
<?php //echo $form->labelEx($model,'categoryid'); ?>
<?php //echo $form->textField($model,'categoryid'); ?>
<?php //echo $form->error($model,'categoryid'); ?>
Perintah diatas tidak digunakan karena pada langkah sebelumnya kita telah
mendefinisikan kategori untuk setiap Diklat yang dipilih, selain itu kalau diaktifkan
juga akan terjadi konflik dualisme kategori.
4) Dibagian view Kategori ini, selain bisa membuat training baru kita juga ingin
menambah peserta ke masing‐masing diklat. Buka CategoryController.php atur
script pada actionView menjadi seperti berikut:
public function actionView($id)
{
$totraining=new Training('search');
$totraining->unsetAttributes();
$totraining->categoryid=$id;
$this->render('view',array(
'model'=>$this->loadModel($id),
'totraining'=>$totraining,
));
}
5) Masuk ke folder view dari kategori lalu buka file view.php, kita ingin menampilkan
listing diklat yang dikategorikan per masing‐masing kategori, tambahkan kode
sebagai berikut:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'training-grid',
'dataProvider'=>$totraining->search(),
//'filter'=>$totraining,
'emptyText'=>'Belum ada training pada kategori ini',
Komunitas eLearning IlmuKomputer.Com 8
Copyright © 2008‐2012 IlmuKomputer.Com
'summaryText'=>'',
'columns'=>array(
array(
'name'=>'No',
'type'=>'raw',
'value'=>'$data->idtraining',
),
array(
'name'=>'Nama diklat',
'type'=>'raw',
'value'=>'Chtml::link($data-
>name_training,array(\'training/view\',\'id\'=>$data->idtraining))',
),
array(
'name'=>'Jamlat',
'type'=>'raw',
'value'=>'$data->hours',
),
)));?>
Berhasil sudah anda membuat tampilan statis kategori diklat sampai keisi‐isinya.
Komunitas eLearning IlmuKomputer.Com 9
Copyright © 2008‐2012 IlmuKomputer.Com
'model'=>$model,
));
}
Dengan kode ini, orang yang akan menambah diklat baru, harus melewati langkah
mengeklik nama kategori dahulu. Ini bermanfaat supaya tidak ada diklat dibuat
tanpa kategori sama sekali.
2) Sekarang saatnya membuat link Menambah Peserta pada view Training. Masuk ke
folder view dari Training lalu buka file view.php tambahkan kode dibawah ini :
<?php
$this->menu=array(
array('label'=>'Daftarkan Peserta',
'url'=>array('participant/create','id'=>$model->idtraining )),);
?>
3) Ubah juga view dari _form.php dari Participant, hilangkan field Trainingid atau untuk
amannya uncheck dengan //
<?php //echo $form->labelEx($model,'trainingid'); ?>
<?php //echo $form->textField($model,'trainingid'); ?>
<?php //echo $form->error($model,'trainingid'); ?>?>
Perintah diatas tidak digunakan karena pada langkah sebelumnya kita telah
mendefinisikan Diklat untuk setiap Peserta yang dipilih, selain itu kalau diaktifkan
juga akan terjadi konflik dualisme Diklat.
4) Dibagian view Training ini, selain bisa membuat training baru kita juga ingin
menambah peserta ke masing‐masing diklat. Buka TrainingController.php atur script
pada actionView menjadi seperti berikut:
public function actionView($id)
{
$toparticipant=new Participant('search');
$toparticipant->unsetAttributes();
$toparticipant->trainingid=$id;
$this->render('view',array(
'model'=>$this->loadModel($id),
'toparticipant'=>$toparticipant,
));
}
5) Masuk ke folder view dari Training lalu buka file view.php, kita ingin menampilkan
listing diklat yang dikategorikan per masing‐masing training, tambahkan kode
sebagai berikut:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'participant-grid',
'dataProvider'=>$toparticipant->search(),
//'filter'=>$toparticipant,
'emptyText'=>'Belum ada Peserta yang mendaftar pada diklat ini',
'summaryText'=>'',
'columns'=>array(
array(
'name'=>'No',
'type'=>'raw',
'value'=>'$data->idparticipant',
),
array(
'name'=>'Nama Peserta',
'type'=>'raw',
'value'=>'Chtml::link($data-
>name_participant,array(\'participant/view\',\'id\'=>$data-
>idparticipant))',
Komunitas eLearning IlmuKomputer.Com 10
Copyright © 2008‐2012 IlmuKomputer.Com
),
array(
'name'=>'Jamlat',
'type'=>'raw',
'value'=>'$data->city',
),
)));?>
Satu langkah lagi akan saya tambahkan yaitu tampilan dari Participant, buka folder view,
participant, view.php
1. Breadcrumbs dari participant
$this->breadcrumbs=array(
'Participants'=>array('index'),
$model->idparticipant,
);
Ubah menjadi seperti ini
$this->breadcrumbs=array(
'Participants'=>array('index'),
$model->name_participant,
);
2. Ubah pula operations dari participant
$this->menu=array(
array('label'=>'List Participant', 'url'=>array('index')),
array('label'=>'Create Participant', 'url'=>array('create')),
array('label'=>'Update Participant', 'url'=>array('update',
'id'=>$model->idparticipant)),
array('label'=>'Delete Participant', 'url'=>'#',
'linkOptions'=>array('submit'=>array('delete','id'=>$model-
>idparticipant),'confirm'=>'Are you sure you want to delete this
item?')),
array('label'=>'Manage Participant', 'url'=>array('admin')),
);
Ubah menjadi seperti ini
$this->menu=array(
array('label'=>'Ubah Peserta', 'url'=>array('update',
'id'=>$model->idparticipant)),
array('label'=>'Hapus Peserta', 'url'=>'#',
'linkOptions'=>array('submit'=>array('delete','id'=>$model-
>idparticipant),'confirm'=>'Are you sure you want to delete this
item?')),
);
3. Kemudian ubah pula tampilan dari tulisan peserta diklat dari menjadi
<h1><?php echo $model->name_participant; ?></h1>
4. Data peserta juga ingin kita ubah, dari seperti ini
<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'idparticipant',
'name_participant',
'nip',
'city',
'trainingid',
),
)); ?>
Menjadi begini
<?php $this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
Komunitas eLearning IlmuKomputer.Com 11
Copyright © 2008‐2012 IlmuKomputer.Com
'attributes'=>array(
'name_participant',
'nip',
'city',
),
)); ?>
Langkah berikutnya, anda bisa berkreasi sendiri tentunya. Misal dihalaman update ingin
diubah, atau halaman Manage menurut anda perlu ditampilkan, halaman create ingin
dimodif dll. Hal penting yang harus diperhatikan adalah bahwa, setiap halaman view adalah
hasil representasi dari proses coding yang telah kita buat di controller, function actionView,
action adalah akan menghasilkan view.php, actionCreate akan menghasilkan create.php dst.
B. REFERENSI
http://www.yiiframework.com/doc/guide/1.1/id
http://www.yiiframework.com/wiki/250/yii‐for‐beginners/
C. BIOGRAFI PENULIS
Ninin Sapto Hargiyanto. Menyelesaikan Diploma di STAN, seorang Fungsional Pranata Komputer
di Kementerian Keuangan, Jakarta. Bidang peminatan di Ilmu Komputer adalah Web
Development, Networking serta Linux.
Komunitas eLearning IlmuKomputer.Com 12
Copyright © 2008‐2012 IlmuKomputer.Com