pemrograman web berbasis framework laporan bab 5 \" membuat aplikasi dengan yii \" oleh

31
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

Upload: polines

Post on 03-Dec-2023

0 views

Category:

Documents


0 download

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

4. Klik pada model generator untuk tbl_pegawai

5. Crud untuk tbl_pegawai

6. Controller untuk tbl_pegawai

7. Form untuk tbl_pegawai

8. Module untuk tbl_pegawai

Hasil :

Tabel GOLONGAN9. Model untuk tbl_golongan

10. Crud untuk tbl_golongan

11. Controller untuk tbl_golongan

12. Form untuk tbl_golongan

13. Module untuk tbl_golongan

Hasil