YII Indonesia

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

Transcript of YII Indonesia

Page 1: YII Indonesia

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

Page 2: YII Indonesia

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

Page 3: YII Indonesia

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

Page 4: YII Indonesia

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

Page 5: YII Indonesia

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/

Page 6: YII Indonesia

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

Page 7: YII Indonesia

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/

Page 8: YII Indonesia

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.

Page 9: YII Indonesia

Untuk mengelola data, melihat dan menambah, buka link :

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

Tekan link New Content,  masukkan data lalu Create.

Page 10: YII Indonesia

Bukalah kembali Map, melalui :

Data yang baru akan muncul :

Page 11: YII Indonesia

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.

Page 12: YII Indonesia

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.

Page 13: YII Indonesia

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__)

Page 14: YII Indonesia

{

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()

{

Page 15: YII Indonesia

$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));

}

Page 16: YII Indonesia

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

Page 17: YII Indonesia

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(

Page 18: YII Indonesia

'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

Page 19: YII Indonesia

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);

Page 20: YII Indonesia

}}

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

Page 21: YII Indonesia

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

Page 22: YII Indonesia

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;

    }

Page 23: YII Indonesia

}

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

Page 24: YII Indonesia

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

Page 25: YII Indonesia

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]