pemrograman web berbasis framework laporan bab 5 \" membuat aplikasi dengan yii \" oleh
TRANSCRIPT
PEMROGRAMAN WEB BERBASIS FRAMEWORK
LAPORAN BAB 5
“MEMBUAT APLIKASI DENGAN YII”
Oleh :
Nama : Meyla Yan Sari
Kelas : IK-2B
NIM : 3. 34. 13. 1. 10
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
2015
MENGENAL DATABASE, TABEL MySQL
I. Tujuan Instruksional Khusus
Setelah menyelesaikan praktek ini mahasiswa dapat :
1. Mengenal cara membuat aplikasi dengan utilitas command line yiic
2. Melakukan pengaturan koneksi ke database MySQL
3. Membuat kode dengan generator gii
4. Mengerti hubungan antarmodul yang terdapat pada Model, View dan Controller serta
metode-metode didalamnya.
II. Dasar Teori
A. Membuat Aplikasi Web dengan Perintah yiic
Pertama yang dilakukan untuk membuat aplikasi adalah membuat subfolder untuk
menempatkan modul-modul yang akan dibuat. Caranya menggunakan yiic (tool
command line) dang ii (sebuah code generator berbasis web) untuk mengautomatisasi
pembuatan kode untuk tugas-tugas tertentu.
Untuk membuat aplikasi dengan framework Yii adalah sebagai berikut : Misalkan yii
sebagai folder di mana Yii diinstalasi, dan myweb adalah document root dari web server
kita. Jalankan yiic pada baris perintah seperti berikut :
Jika menggunakan LINUX masuk ke foldercd /var/www/html/yii/framework
Jika Anda pakai Windows seperti dibahas di bagian 1.6[root@localhost framework]# ./yiic webapp /var/www/html/myweb
Create a Web application under ‘/var/www/html/myweb’? (yes|no)
[no]:y
mkdir /var/www/html/myweb
generate index.php
generate index-test.php
mkdir /var/www/html/myweb/themes
mkdir /var/www/html/myweb/themes/classic
mkdir /var/www/html/myweb/themes/classic/views
mkdir
/var/www/html/myweb/themes/classic/views/layouts
generate themes/classic/views/.htaccess
mkdir /var/www/html/myweb/themes/classic/views/system
mkdir /var/www/html/myweb/themes/classic/views/site
mkdir /var/www/html/myweb/assets
mkdir /var/www/html/myweb/protected
mkdir /var/www/html/myweb/protected/test
mkdir /var/www/html/myweb/protected/test/unit
mkdir /var/www/html/myweb/protected/test/functional
generate protected/test/functional/SiteTest.php
generate protected/test/phpunit.xml
generate protected/test/WebTestCase.php
mkdir /var/www/html/myweb/protected/tests/fixtures
mkdir /var/www/html/myweb/protected/tests/report
generate protected/tests/boostrap.php
generate protected/yiic
genetare protected/yiic.php
mkdir /var/www/html/myweb/protected/extensions
mkdir /var/www/html/myweb/protected/components
generate protected/components/UserIdentity.php
generate protected/components/Controller.php
mkdir /var/www/html/myweb/protected/commands
mkdir /var/www/html/myweb/protected/commands/shell
mkdir /var/www/html/myweb/protected/migrations
generate protected/.htaccess
mkdir /var/www/html/myweb/protected/data
generate protected/data/schema.sqlite.sql
generate protected/data/testdrive.db
generate protected/data/schema.mysql.sql
mkdir /var/www/html/myweb/protected/controllers
generate protected/controllers/SiteController.php
mkdir /var/www/html/myweb/protected/message
mkdir /var/www/html/myweb/protected/views
mkdir /var/www/html/myweb/protected/views/layouts
generate protected/views/layouts/column2.php
generate protected/views/layouts/main.php
generate protected/views/layouts/column1.php
mkdir /var/www/html/myweb/protected/views/site
generate protected/views/site/index.php
generate protected/views/site/login.php
mkdir /var/www/html/myweb/protected/views/site/pages
generate protected/views/site/pages/about.php
generate protected/views/site.contact.php
generate protected/views/site/error.php
mkdir /var/www/html/myweb/protected/runtime
mkdir /var/www/html/myweb/protected/models
generate protected/models/ContactForm.php
generate protected/models/LoginForm.php
generate protected/yiic.bat
mkdir /var/www/html/myweb/protected/config
generate protected/config/main.php
generate protected/config/console.php
generate protected/config/test.php
mkdir /var/www/html/myweb/css
generate css/print.css
generate css/form.css
generate css/ie.css
generate css/main.css
generate css/screen.css
generate css/bg.gif
mkdir /var/www/html/myweb/images
Your application has been create successfully under
/var/www/html/myweb
Perintah :[root@localhost framework]# ./yiic webapp /var/www/html/myweb
yiic : program generato untu membuat aplikasi web dengan Yii
webapp : parameter web aplikasi
var/www/html/myweb : tempat untuk meletakkan aplikasi di dalam folder
Mencoba menjalakan dengan memanggil http://localhost/myweb/
Gambar 5.1 Kesalahan Pembacaan Sistem Tanggal
Untuk mengatasi bila terjadi kesalahan tanggal, yang harus dilakukan adalah mengubah
file index.php yang terdapat pada folder /var/www/html/myweb/index.php, tambahkan
kode berikut :date_default_timezone_set(‘Asia/Jakarta’);
Lebih lengkapnya seperti pada kode berikut :
File index.php<?php
date_default_timezone_set(‘Asia/Jakarta’);
//menyertakan folder framework yii
$yii=dirname(_FILE_).’/../yii/framework/yii.php’;
$config=dirname(_FILE_).’/protected/config/main.php’;
// remove the following lines when in production mode
defined(‘YII_DEBUG’) or define(‘YII_DEBUG’,true);
//specify how many levels of call stack should be shown in each
log message
defined(‘YII_TRACE_LEVEL’) or define(‘YII_TRACE_LEVEL’,3);
require_once($yii);
Yii::createWebApplication($config) -> run();
Akhir file Index.php
B. Bekerja dengan Database
Agar aplikasi yang dibangun dinamis, Yii menyediakan dukungan berkemampuan untuk
pemrograman database. PHP Data Objects (PDO), Yii Data Access Objects (DAO)
memungkinkan pengaksesan ke system manajemen database (DBMS). Active Record
Yii, diimplementasikan sebagai pendekatan pemetaan relasi antar objek/Object-
Relational Mapping (ORM) yang diadopsi secara luas, untuk mempermudah
pemrograman dengan database. Tabel direpresentasikan dalam bentuk kelas dan baris
(record) dalam bentuk instan, Yii AR mengeliminasi tugas berulang pada penulisan
perintah SQL terutama yang berkaitan dengan operasi CRUD (create, read, update, dan
delete). Setiap kelas AR mewakili tabel database (atau view) yang atributnya diwakili
oleh property kelas AR, dan turunan AR mewakili rekaman dalam tabel tersebut.
Operasi umum CRUD diimplementasikan sebagi metode AR.
1. Pengaturan Koneksi ke Database
ActiveRecord bergantung pada koneksi database untuk melaksanakan operasi terkait
dengan database. Secara default, ActiveRecord menganggap bahwa komponen
aplikasi db adalah turunana CDbConnection yang dibutuhkan untuk bertindak
sebagai koneksi database. Konfigurasi aplikasi berikut memperlihatkan sebuah
contoh potongan kode yang terdapat pada file /protected/main/config.php :
return array(
‘components’=>array(
‘db’=>array(
‘class’=>’system.db.CDbConnection’,
‘connectionString’=>’sqlite:path/to/dbfile’,
// ‘schemaCachingDuration’=>3600,
),
),
);
Lngkah selanjutnya menghubungkan aplikasi yang dibuat untuk dikoneksikan ke
database myweb. Perintah koneksi ke database diletakkan pada file config.php.
Caranya buka dan ubah var/www/html/myweb/protected/main/config.php,
seperti pada kode berikut:
File config.php<?php
// uncomment the following to define a path alias
Yii::setPathOfAlias(‘local’,’path/to/local-folder’);
// This is the main Web application configuration. Any
// writable
// CWebApplication properties can be configured here.
return array(
‘basePath’=>dirname(_FILE_).DIRECTORY_SEPARATOR.’..’,
‘name’=>My Web Application’,
// preloading ‘log’ component
‘proload’=>array(‘log’),
//autoloading model and component classes
‘import’=>array(
‘application.models.*’,
‘application.components.*’,
),
‘modules’=>array(
// uncomment the following to enable the Gii tool
‘gii’=>array(
‘class’=>’system.gii.GiiModule’,
‘password’=>’123’,
// if removed, Gii defaults to localhost only.
// edit carefully
// to taste.
‘ipFilters’=>array(‘127.0.0.1’,’::1’),
),
),
//application components
‘components’=>array(
‘user’=>array(
// enable cookie-based authentication
‘allowAutoLogin’=>true,
),
// uncomment the following to enable URLs in
// path-format
/*
‘urlManager’=>array(
‘urlFormat’=>’path’,
‘rules’=>array(
‘<controller:\w+>/<id:\d+>’=>’<controller>/view’,
‘<controller:\w+>/action:\w+>/<action:\w+>/<id:\
d+>’=>’<controller>/<action>’,
‘<controller:\w+>/<action:\w+>’=>’<controller>/<action>’,
),
),
‘db’=>array(
‘connectionString’ =>
‘sqlite:’.dirname(_FILE_).
‘/../data/testdrive.db’,
),
// uncommet the following to use a MySQL
//database
*/
‘db’=>array(‘connectionString’ =>’mysql:host=localhost;
dbname=myweb’,‘emulatePrepare’ => true,‘username’ => ‘badi’,‘password’ => ‘badi’,‘charset’ => ‘utf8’,
),
‘errorHandler’=>array(
// use ‘site/error’ action to display
// errors
‘errorAction’=>’site/error’,
),
‘log’=>array(
‘class’=>’CLogRouter’,
‘routes’=>array(
array(
‘class’=>CFileLogRoute’,
‘levels’=>’error,warning’,
),
// uncomment the following
// to show
// log message on web pages
/*
array(
‘class’=>’CWebLogRoute’,
),
*/
),
),
),
// application-level parameters that can
// be accessed
// using Yii::app()->params{‘paramName’}
‘params’=>array(
// this I used in contact page
‘adminEmail’=>’[email protected]’,
),
),
Akhir config.php
Perintah:
‘db’=>array(
‘connectionString’ =>
‘mysql:host=localhost;dbname=myweb’,
‘emulatePrepare’ => true,
‘username’ => ‘badi’,
‘password’ => ‘badi’,
‘charset’ => ‘utf8’,
),
db nama objek untuk koneksi
connectionString: nama elemen array untuk koneksi
mysql:host=localhost;dbname=myweb: nilai parameter
mysql : jenis database yang digunakan ada mysql
host=localhost: nama host yang digunakan untuk server database mysql
dbnama=myweb: nama database yang akan digunakan
‘username’ => ‘badi’ : nama user pada mysql
‘password’ => ‘badi’ : kunci
2. Setting Generator gii
Generator Gii adalah perintah yang menjalankan skrip untuk menciptakan kelas yang
berkaitan dengan tabel berbasis web. Gii (web generator kode berbasis web) untuk
mengotomatisasi pembuatan kode untuk tugas-tugas tertentu. Anda bisa membuat
model, controller, dan view dengan perintah CRUD menggunakan modul gii. Untuk
menggunakan gii Anda perlu mengatur file/myweb/protected/main/config.php,
di bagian ‘gii’=>… diubah seperti kode berikut:……
‘gii’=>array(
‘class’=>’system.gii.GiiModule’,
‘password’ =>’123’,
‘ipFilters’=>array(‘127.0.0.1’),
//’newFileMode’=>0666,
//’newDirMode’=>0777,
‘generatorPaths’=>array(
‘application.gii’
),
),
……..
Untuk menjalankan modul gii, Anda login dengan memasukkan kunci, yang diatur
lewat perintah ‘password’=>’123’. Langkah selanjutnya jalankan dengan memanggil
URL http://localhost/myweb/index.php?r=gii, seperti terlihat pada gambar berikut:
Gambar 5.2 Login ke Aplikasi gii
Halaman Yii Code Generator terdapat beberapa menu, antara lain :
Controller Generator : menciptakan controller
Crud Generator : untuk generator skrip create, read, update, dan delete
Form Generator : menciptakan form
Model Generator : untuk membuat model berdasarkan tabel
Module Generator : menciptakan modul yang akan diletakkan pada folder modul.
Gambar 5.3 Menu Aplikasi Generator gii
Langkah berikutnya masukkan password : 123 untuk masuk ke menu gii.
C. Menciptakan Model dengan gii
Salah satu keunggulan framework untuk membuat model tidak perlu mengetik dari nol.
Yii menyediakan generator pembangkit kode program berdasarkan kerangka/template
yang diletakkan dalam folder yii/framework/gii. Sehingga penulisan program sangat
efisien. Setelah kode program terbentuk, Anda tinggal melakukan pengubahan kode
program sesuai dengan keinginan.
Untuk membuat model lakukan langkah berikut:
Masukkan nama tabel ke dalam kolom nama tabel (tbl_pegawai) yang telah dibuat
pada bahasan sebelumnya.
Tuliskan nama kelas model. Nama kelas secara otomatis akan memberikan nama
model TblPegawai.
Klik Preview untuk melihat file tabel akan menunjukkan dengan link model file.
Klik Generate.
Seperti pada gambar 5.4 berikut :
Gambar 5.4 Membuat Model dengan gii
Klik tombol Preview untuk melihat
Gambar 5.5 Melihat File Model dengan gii
models/TblPegawai.php adalah kelas TblPegawai dituliskan di file
TblPegawai.php folder models
Selanjutnya, klik tombol Generate
Code Template *
default (/var/www/html/yii1112/framework/gii/generators/model/templates/default)
Gambar 5.6 Hasil Pembuatan File Model dengan gii
D. Fungsi-fungsi yang terdapat dalam Model
Pada saat Anda membuka model lewat generator gii maka akan tercipta kelas/model
TblPegawai dan fungsi/metode yang terdapat di dalamnya. Adapun struktur yang
tertulis kode dalam file TblPegawai.php seperti skrip berikut:
Bagian deklarasi kelas TblPegawai
Skrip deklarasi kelas TblPegawai<?php
/**
* This is the model class for table “tbl_pegawai”
*
* The followings are the available columns in table ‘tbl_pegawai’;
* @property string $nip
* @property string $nama
* @property string $alamat
* @property string $jk
* @property string $tg_lhr
* @property string $gol_id
*/
Class TblPegawai extends CActiveRecord
(
public $nilai;
……………
………..
)
Akhir skrip deklarasi kelas TblPegawai
Untuk mengakses tabel database, pertama perlu mendefinisikan kelas AR dengan
menurut CActiveRecord.class TblPegawai extends CActiveRecord
Adalah deklarasi kelas dengan menurunkan kelas ekstensi CActiveRecord
public $nilai : pernyataan jika ingin menambahkan variable sendiri dalam kelas
TblPegawai.
1. function model()
Suatu fungsi yang akan mengembalikan kelas beserta, dengan parameter
($className=__CLASS__), untuk __CLASS__ adalah konstanta nama kelas. Adapun
fungsi model seperti pada contoh skrip berikut:public static function model($className=__CLASS__)
{
return parent::model($className);
}
2. function tableName()
setiap kelas AR mewakili satu tabel dalam database, dan instan AR mewakili sebuah
record (baris) dalam tabel tersebut. Contoh berikut memperlihatkan kode minimal
yang diperlukan untuk kelas AR yang mewakili tabel tbl_pegawai.public function tableName()
{
return ‘tbl_pegawai’;
}
3. function rules()
Fungsi rules untuk mengatur validasi masukan. Sebuah atribut dianggap aman jika
ditulis dalam aturan validasi. Misalnya pernyataan : array(‘nip’, ‘required’)
isian nip tidak boleh kosong, dan array(‘gol_id’, ‘numerical’,
‘integerOnly’=>true), isian gol_id harus bernilai integer, array(‘nip’,
‘length’, ‘max’=>5), membatasi isian nip maksimal 5 karakter, lengkap seperti
pada skrip berikut:public function rules()
{
return array(
array(‘nip’, ‘required’),
array(‘gol_id’, ‘numerical’, ‘integerOnly’=>true),
array(‘nip’, ‘length’, ‘max’=>5),
array(‘nama, alamat’, ‘length’, ‘max’=>40),
array(‘jk’, ‘length’, ‘max’=>1),
array(‘tg_lahir’, ‘safe’),
array(‘nip, nama, alamat, jk, tg_lahir, gol_id’, ‘safe’,
‘on’=>’search’),
);
}
4. function relation()
Fungsi ini digunakan untuk meletakkan relasi tabel yang diimplementasikan lewat
kelas (model). Jenis relasi yang disediakan oleh Yii, akan dibahas sendiri diabgi
relasi tabel. Pada bagian ini membahas kelas TblPegawai relasi dengan kelas
TblGolongan, kunci relasi foreign key ‘gol_id’ di tabel tbl_pegawai, ke primary
key ‘id’ di tbl_golongan. Seperti pada skrip berikut:public function relations()
{
return array
‘gol’=>array(self::BELONGS_TO, ‘TblGolongan’, ‘gol_id’),
);
}
5. function attributeLabel()
Ketika Anda mendesain sebuah formulir isian, seringkali perlu menampilkan label
untuk setiap field masukkan. Label memberi tahu user jenis informasi apa yang harus
dimasukkan ke dalam field isian. Meskipun dapat memberi label secara langsung
dalam sebuah tampilan, akan lebih fleksibel dan nyaman jika Anda menetapkannya
dalam model terkait. Secara default kelas CModel akan mengembalikan nama atribut
yang terdapat tabel sebagai label. Sehingga mempercepat dalam pembuatan formulir
masukan pada halaman web.public function attributeLabels()
{
return array(
‘nip’ => ‘NIP’,
‘nama’ => ‘Nama’,
‘alamat’ => ‘Alamat’,
‘jk’ => ‘Jenis Kelamin’,
‘tg_lhr’ => ‘Tanggal Lahir’,
‘gol_id’ => ‘Golongan’,
‘nilai’ => ‘Nilai’,
);
6. function search()
Fungsi search(), bagian yang digunakan untuk pencarian berdasarkan field yang
terdapat pada tabel. Fungsi ini lewat kelas CDbCriteria dan menggunakan metode
compare untuk perbandingan sebagai metode pencarian seperti halnya perintah LIKE
dalam SQL. Pencarian tersebut berkaitan dengan field-field dalam tabel.public function search()
{
$criteria=new CDbCriteria;
$criteria->compare(‘nip’,$this->nip, true);
$criteria->compare(‘nama,$this->nama,true);
$criteria->compare(‘alamat’,$this->alamat,true);
$criteria->compare(‘jk’$this->jk,true);
$criteria->compare(‘tg_lhr’,$this->tg_lhr,true);
$criteria->compare(‘gol_id’,$this->gol_id);
return new CActiveDataProvider($this, array(
‘criteria’=>$criteria,
‘pagination’=>array(
Yii::app()->params->recordPenPage,
),
));
)
7. Fungsi Tambahan Buatan Sendiri
Dalam model atau kelas adalah representasi dari tabel, dibagian ini Anda juga bisa
menambahkan variable atau method/fungsi. Skrip di bawah suatu fungsi yang diberi
nama jenisKelamin(), dan fungsi mengembalikan nilai array(‘L’=>’L – Laki-
laki’,’P’=>’P – Perempuan’), untuk keperluan isian dalam bentuk kotak cobo
DropDownList.
public static function jenisKelamin()
{
return array(
‘L’=>’L – Laki-laki’,
‘P’=>’P – Perempuan’,
);
}
Cara memanggilnya TblPegawai::jenisKelamin(),TblPegawai adalah nama
kelas Tabel Pegawai dan jenisKelamin() fungsi/method.
III. Alat dan Bahan
Alat dan bahan yang dibutuhkan untuk praktikum ini adalah sebagai berikut :
1. PC Processor minimal Pentium IV, RAM minimal 512 MB
2. XAMPP Control Panel.
3. Browser, seperti Mozilla Firefox, Google Chrome dan sebagainya.
IV. Langkah Kerja
V. Hasil Praktikum
1. Mengganti nama database pada main.php
2. Mengganti gii
3. Masuk pada http://localhost/myweb/index.php?r=gii
Masukkan password : meyla3129