25
Pengenalan YII Eko Budhi Suprasetiawan Email [email protected] FB : http://facebook.com/ekobs MP : http://ekobs.multiply.com

44892737 YII Indonesia

Embed Size (px)

DESCRIPTION

Yii

Citation preview

Pengenalan YIIEko Budhi SuprasetiawanEmail : [email protected] : http://facebook.com/ekobs MP : http://ekobs.multiply.com

History

30.10.2009 Eko Budhi S First cut

Contact UsPertanyaan bisa dikirimkan ke komunitas PHPGroup : [email protected] Homepage : http://groups.yahoo.com/group/phpug

Table of ContentsI Pengantar..................................................................................................................................5

A Objective............................................................................................................................5B Instalasi..............................................................................................................................5

B.1 Persiapan.....................................................................................................................5B.2 Download...................................................................................................................5B.3 File > Open Project....................................................................................................5B.4 Database.....................................................................................................................6B.5 protected/config/main.php..........................................................................................6B.6 Apache........................................................................................................................7

C Tour....................................................................................................................................7II Catatan Developer.................................................................................................................10

A Apakah Yii ?....................................................................................................................10B Software Architecture.......................................................................................................10

B.1 Model........................................................................................................................10B.2 Controller..................................................................................................................11B.3 View..........................................................................................................................11

C Koneksi ke database.........................................................................................................12D Me­retrieve data...............................................................................................................12

D.1 Model........................................................................................................................12E List....................................................................................................................................13

E.1 Controller..................................................................................................................13F Create................................................................................................................................14

F.1 Model.........................................................................................................................14F.2 Controller..................................................................................................................14

G Update..............................................................................................................................15G.1 Model........................................................................................................................15G.2 Controller.................................................................................................................15

H Delete...............................................................................................................................15H.1 Model........................................................................................................................15H.2 Controller.................................................................................................................15

I Google Map.......................................................................................................................16I.1 Model.........................................................................................................................16I.2 Controller...................................................................................................................16I.3 View...........................................................................................................................17

J Pros­Cons..........................................................................................................................17III Lab 1 : Salam Keadilan.......................................................................................................18

A Requirement.....................................................................................................................18B Software Architecture.......................................................................................................18

B.1 Controller..................................................................................................................18B.2 View..........................................................................................................................18

C Praktikum.........................................................................................................................18C.1 EhloController.php....................................................................................................18C.2 View..........................................................................................................................19

D Test...................................................................................................................................19IV Lab 2 : Penguji Bilangan Prima..........................................................................................20

A Requirement.....................................................................................................................20B Software Architecture......................................................................................................20

B.1 Controller..................................................................................................................20B.2 View.........................................................................................................................20

C Praktikum.........................................................................................................................21C.1 CheckerController.....................................................................................................21C.2 checker­form.............................................................................................................22C.3 checker­report.php....................................................................................................22

D Test...................................................................................................................................22V Lab 3 : Financial Log...........................................................................................................23

A Requirement.....................................................................................................................23B Software Architecture......................................................................................................23C Praktikum.........................................................................................................................23

C.1 Generate model.........................................................................................................23C.2 Generate CRUD........................................................................................................23

D Test...................................................................................................................................23

I  Pengantar

A  ObjectiveDalam lab ini, Anda akan bisa :

1. Memahami dasar pemrograman dengan Yii2. Membaca parameter dari HTTP Request3. Melakukan koneksi ke database4. Melakukan proses Create­Retrieve­Update­Delete ke dalam datastore  5. Menggunakan data untuk Google Map

B  Instalasi

B.1  PersiapanAnda membutuhkan :

1. JDK 5 atau lebih baru

2. PHP

3. mySQL

4. Netbeans IDE. Tutorial ini ditulis dengan Netbeans 6.7.1

B.2  DownloadUntuk   bisa   memulai   lab   menggunakan   Yii,   sebuah   aplikasi   contoh   sudah dikembangkan dan bisa di­download di :

http://sourceforge.net/projects/kunlun/files/

Folder : Camp­161­Yii

File : kunlun­lab­161­b01.zipURL  :

http://sourceforge.net/projects/kunlun/files/Camp­161­Yii/kunlun­lab­161­b01.zip/download 

Unzip ke dalam folder. Misal ke dalam folder

/home/ekobs/codefarm/

sehingga aplikasi contoh akan tersimpan dalam folder

/home/ekobs/codefarm/kunlun/

B.3  File > Open ProjectBukalah di dalam Netbeans IDE dengan menggunakan menu File > Open Project

B.4  DatabaseSiapkan database. Sebuah file sql tersedia di dalam folder sql. Jalankan misal melalui command line untuk menyiapkan database dan table yang dibutuhkan :

$ mysql ­uroot ­pibrahim < sql/kilimanjaro.sql

Sesuaikan user dan password dari database mySQL Anda.

B.5  protected/config/main.phpSelanjutnya, edit file yang menyimpan konfigurasi database :

Folder : webapp/kunlun/protected/config/

File : main.php

Ubah bagian ini :

'db'=>array('connectionString'=>'mysql:host=localhost;dbname=KILIMANJARO_DB',

'username'=>'root','password'=>'ibrahim',

),

sesuaikan dengan user dan password dari database mySQL Anda.

B.6  ApacheAgar bisa diakses melalui Web, proyek kunlun harus diletakkan dalam document root dari Apache.

$   sudo   ln   ­s   /home/ekobs/codefarm/kunlun/webapp/kunlun /var/www/ 

C  TourAnda bisa mencoba mencicipi aplikasi contoh.

Buka melalui browser Anda :http://localhost/kunlun/index.php?r=map/view

Sebuah peta Google menampilkan beberapa marker berdasarkan data yang ada di database.

Untuk mengelola data, melihat dan menambah, buka link :

http://localhost/kunlun/index.php?r=content 

Tekan link New Content,  masukkan data lalu Create.

Bukalah kembali Map, melalui :

Data yang baru akan muncul :

II  Catatan Developer

A  Apakah Yii ?Yii   adalah   sebuah   framework  yang  bisa   digunakan  dalam pengembangan   aplikasi dengan   bahasa   pemrograman   PHP.   Yii   menerapkan   pola   disain   Model­View­Controller   untuk   menangani   HTTP   Request   yang   dikirimkan   user   melalui   Web browser.

Yii   dipersenjatai   dengan   command   line   untuk   meng­generate   kerangka   sebuah aplikasi baru. Contoh, aplikasi kunlun yang menjadi lab dibuat dengan command line ini :

  ./framework/yiic webapp webapp/kunlun 

Yii   juga menyediakan command  line  yang bisa  digunakan sebagai  code  generator untuk kode­kode yang diperlukan dalam aplikasi  Create­Retrieve­Update­Delete  ke database.

B  Software ArchitectureYii menerapkan pola disain MVC. Untuk operasi Create­Retrieve­Update­Delete, Yii menyediakan code generator yang bisa men­generate Controller, Model dan View.

B.1  ModelContoh model adalah :

<?php

class Content extends CActiveRecord{…

public function tableName(){

return 'CONTENT_TBL';}

}

Model ini bisa dibuat oleh code generator yang disediakan Yii.

B.2  ControllerContoh Controller :

<?php

class ContentController extends CController

{

...

public function actionList()

{

...

}

...

}

Controller ini bisa dibuat oleh code generator yang disediakan Yii.

B.3  View

Contoh, listing content :

<?php foreach($models as $n=>$model): ?>

<div class="item">

...

<?php   echo   CHtml::encode($model­>getAttributeLabel('TITLE')); ?>:

<?php echo CHtml::encode($model­>TITLE); ?>

<br/>

<?php   echo   CHtml::encode($model­>getAttributeLabel('LATITUDE')); ?>:

<?php echo CHtml::encode($model­>LATITUDE); ?>

...

</div>

<?php endforeach; ?>

View ini bisa dibuat oleh code generator yang disediakan Yii.

C  Koneksi ke databaseUntuk   bisa   membangun   koneksi   ke   database,   dalam   Yii   framework   dilakukan configurasi di database

Folder  : webapp/kunlun/protected/configFile : main.php

Perhatikan bagian ini :'db'=>array( 

'connectionString'=>'mysql:host=localhost;dbname=KILIMANJARO_DB', 

'username'=>'root', 'password'=>'ibrahim', 

),

D  Me­retrieve dataUntuk bisa me­retrieve data, dengan Yii dijalankan code generator :

./framework/yiic shell webapp/kunlun/index.php

Di dalam shell >> model Content CONTENT_TBL

lalu

>> crud Content

Ini akan menghasilkan :1. Sebuah Controller2. Sebuah Model3. Beberapa JSP terkait fitur Create­Retrieve­Update­Delete ...

D.1  ModelModel yang di­generate :

<?php

class Content extends CActiveRecord

{

public static function model($className=__CLASS__)

{

return parent::model($className);

}

public function tableName()

{

return 'CONTENT_TBL';

}

public function rules()

{

return array(

array('TITLE','length','max'=>255),

array('LATITUDE, LONGITUDE', 'numerical'),

);

}

public function attributeLabels()

{

return array(

'CONTENT_ID' => 'Content',

'TITLE' => 'Title',

'LATITUDE' => 'Latitude',

'LONGITUDE' => 'Longitude',

);

}

}

E  ListCode generator yang dibawa bersama Yii framework sudah meng­generate kode­kode untuk meng­list data di database.

E.1  ControllerFolder : webapp/kunlun/protected/controllersFile : ContentController.php

Code ini ditulis oleh code generator Yii :

public function actionList()

{

$criteria=new CDbCriteria;

$pages=new   CPagination(Content::model()­>count($criteria));

$pages­>pageSize=self::PAGE_SIZE;

$pages­>applyLimit($criteria);

$models=Content::model()­>findAll($criteria);

$this­>render('list',array(

'models'=>$models,

'pages'=>$pages,

));

}

F  CreateCode generator yang dibawa bersama Yii framework sudah meng­generate kode­kode untuk meng­insert  data ke database.

F.1  ModelReuse.

F.2  ControllerFolder : webapp/kunlun/protected/controllers/File : ContentController.php

Code ini ditulis oleh code generator Yii :

public function actionCreate()

{

$model=new Content;

if(isset($_POST['Content']))

{

$model­>attributes=$_POST['Content'];

if($model­>save())

$this­>redirect(array('show','id'=>$model­>CONTENT_ID));

}

$this­>render('create',array('model'=>$model));

}

G  UpdateCode generator yang dibawa bersama Yii framework sudah meng­generate kode­kode untuk meng­update data di database.

G.1  ModelReuse.

G.2  ControllerFolder : webapp/kunlun/protected/controllers/File : ContentController.php

Code ini ditulis oleh code generator Yii :

public function actionUpdate()

{

$model=$this­>loadContent();

if(isset($_POST['Content']))

{

$model­>attributes=$_POST['Content'];

if($model­>save())

$this­>redirect(array('show','id'=>$model­>CONTENT_ID));

}

$this­>render('update',array('model'=>$model));

}

H  DeleteCode generator yang dibawa bersama Yii framework sudah meng­generate kode­kode untuk meng­delete data di database.

H.1  ModelReuse

H.2  ControllerFolder : webapp/kunlun/protected/controllersFile : ContentController.php

Code ini ditulis oleh code generator Yii :

public function actionDelete()

{

if(Yii::app()­>request­>isPostRequest)

{

// we only allow deletion via POST request

$this­>loadContent()­>delete();

$this­>redirect(array('list'));

}

else

throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');

}

I  Google MapGoogle  Map menjadi  contoh  dari  potongan kode yang ditulis   tanpa  bantuan code generator.

I.1  ModelReuse.

I.2  ControllerController bertugas mengakses Model untuk mendapatkan data dan menyerahkan ke View untuk menampilkan data.

Folder : system/application/controller/File : MapController.php

<?php

class MapController extends CController{

public $defaultAction='view';

public function actionView(){

$criteria=new CDbCriteria;$models=Content::model()­>findAll($criteria);

$this­>render('view',array(

'models'=>$models));

}}

I.3  ViewFolder : webapp/kunlun/protected/views/mapFile : map/view.php

                    var i = 0;

<?php foreach($models as $n=>$model): ?>

                        map.addOverlay(createMarker(                        new GLatLng(<?=$model­>LATITUDE ?>, <?=$model­>LONGITUDE?>)                        , i++                    , "<?=$model­>TITLE?>"                ));

<?php endforeach; ?>

J  Pros­ConsPros :

1. MVC2. Code generate3. Auto binding

Cons :

1. Pendekatan Request­Response

III  Lab 1 : Salam Keadilan

A  RequirementDalam Lab 1, Anda mendapat tantangan untuk bisa menampilkan sebuah pesan ke Web dengan menggunakan Yii Framework. Pesan yang akan tertulis di Web adalah :

Salam Keadilan !

B  Software Architecture

Terdapat   2   potong   kode   yang   Anda   harus   kembangkan   untuk   bisa   memenuhi requirement ini :

• Controller• View

B.1  ControllerEhloController  berperan  menangkap HTTP Request,   selanjutnya untuk studi  kasus kali ini, hanya akan memanggil View.

B.2  ViewSebuah View yaitu ehlo.php akan menampilkan pesan Salam Keadilan !.

C  Praktikum

C.1  EhloController.phpTulislah EhloController.php ...

Folder : webapp/kunlun/protected/controllers/File : EhloController.php

<?php

class EhloController extends CController{

public function actionView(){

                $data = array();                $data["MSG"] = "Salam Keadilan !";

$this­>render('view', $data);

}}

C.2  ViewTulislah view.php …

Folder : webapp/kunlun/protected/views/ehlo/File : view.php

<?= $MSG ?>

D  TestBuka, melalui browser Anda :

http://localhost/kunlun/index.php?r=ehlo/view

IV Lab 2 : Penguji Bilangan Prima

A  RequirementDalam Lab 2, Anda berlatih bagaimana membaca parameter yang dikirimkan melalui HTTP  Request.  Parameter   berupa   sebuah  bilangan.  Program Yii   yang  Anda  buat bertugas mengujinya, apakah merupakan bilangan prima ataukah bukan.

Form isian yang bisa dibuat :

Hasil pengujian :

B  Software Architecture

Potongan kode untuk memenuhi requirement ini mencakup :• Controller• View

B.1  ControllerPrimeChecker akan memuat 2 method :

1. Method form(). Dalam method ini, controller mengarahkan ke checker­form.php2. Method process(). Dalam method ini, controller akan membaca data yang di­submit 

melalui form, melakukan perhitungan, dan memanggil checker­report.php

B.2  ViewTerdapat 2 PHP yang akan melayani kebutuhan ini

1. checker­form.php adalah form yang memuat sebuah isian2. checker­report.php akan menampilkan hasil

C  Praktikum

C.1  CheckerControllerTulislah CheckerController.php …

Folder : webapp/kunlun/protected/controllers

File : CheckerController.php

<?php

class CheckerController extends CController {

    public function actionForm() {

        $this­>render('checker­form');

    }

    public function actionProcess() {

        $x = $_POST["X"];

        $isPrime = $this­>isPrime($x);

        $data = array();

        $data["isPrime"] = $isPrime;

        $this­>render('checker­report', $data);

    }

    function isPrime($x) {

        $isPrime = true;

        $i = 2;

        while ($i <= ($x/2) && $isPrime) {

            $isPrime = ($x % $i > 0);

            $i++;

        }

        return $isPrime;

    }

}

C.2  checker­form

Folder : webapp/kunlun/protected/views/checker/File : checker­form.php

<form action="?r=checker/process" method="post">X : <input name="X"><input type="submit" value="Check !"/></form>

C.3  checker­report.php

Folder : webapp/kunlun/protected/views/checker/File : checker­report.php

<?phpif($isPrime) {    ?>Ya, bilangan prima !<?php}else {    ?>

Bukan bilangan prima ...<?php}?>

D  TestBuka, melalui browser

http://localhost/kunlun/index.php?r=checker/form

V  Lab 3 : Financial Log

A  RequirementDalam   Lab   3,   Anda   mendapat   tantangan   untuk   bisa   menyediakan   fitur   Create­Retrieve­Update­Delete   ke   sebuah   table   yang  memuat   informasi   tentang  Financial Log.

B  Software ArchitectureTable untuk Financial Log dibuat dengan SQL sbb :

create table FINANCIAL_LOG_TBL(ID int auto_increment primary key, BY_WHO varchar(40), FOR_WHAT varchar(255), ON_WHEN date, AMMOUNT double); 

Untuk memenuhi requirement ini Anda cukup menggunakan code generator.

C  Praktikum

C.1  Generate modelJalankan dari folder di mana kunlun berada :

$ ./framework/yiic shell webapp/kunlun/index.php

Selanjutnya di dalam shell generate model :

>> model FinancialLog FINANCIAL_LOG_TBL 

C.2  Generate CRUDMelalui shell, generate CRUD

>> crud FinancialLog

D  TestBuka

http://localhost/kunlun/index.php?r=financialLog

MUSLIM INFOCOM FOUNDATIONAnda siap berbagi planet bumi dengan mereka ? Berbagi mimpi dengan mereka ?

Scholarship Library Training

MIF mempunyai target membantu pengembangan keahlian 5000 software developer yang mempunyai kemampuan untuk shodaqoh minimal Rp 2000 per hari. 

Kunjungi http://www.mif.or.id untuk menyalurkan shodaqoh melalui PayPal ! Untuk rekening MIF di Indonesia silahkan email ke [email protected]