44892737 yii indonesia
DESCRIPTION
YiiTRANSCRIPT
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 Meretrieve 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 ProsCons..........................................................................................................................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 checkerform.............................................................................................................22C.3 checkerreport.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 CreateRetrieveUpdateDelete 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 didownload di :
http://sourceforge.net/projects/kunlun/files/
Folder : Camp161Yii
File : kunlunlab161b01.zipURL :
http://sourceforge.net/projects/kunlun/files/Camp161Yii/kunlunlab161b01.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.
II Catatan Developer
A Apakah Yii ?Yii adalah sebuah framework yang bisa digunakan dalam pengembangan aplikasi dengan bahasa pemrograman PHP. Yii menerapkan pola disain ModelViewController untuk menangani HTTP Request yang dikirimkan user melalui Web browser.
Yii dipersenjatai dengan command line untuk menggenerate 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 kodekode yang diperlukan dalam aplikasi CreateRetrieveUpdateDelete ke database.
B Software ArchitectureYii menerapkan pola disain MVC. Untuk operasi CreateRetrieveUpdateDelete, Yii menyediakan code generator yang bisa mengenerate 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 Meretrieve dataUntuk bisa meretrieve 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 CreateRetrieveUpdateDelete ...
D.1 ModelModel yang digenerate :
<?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 menggenerate kodekode untuk menglist 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 menggenerate kodekode untuk menginsert 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 menggenerate kodekode untuk mengupdate 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 menggenerate kodekode untuk mengdelete 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 ProsConsPros :
1. MVC2. Code generate3. Auto binding
Cons :
1. Pendekatan RequestResponse
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 checkerform.php2. Method process(). Dalam method ini, controller akan membaca data yang disubmit
melalui form, melakukan perhitungan, dan memanggil checkerreport.php
B.2 ViewTerdapat 2 PHP yang akan melayani kebutuhan ini
1. checkerform.php adalah form yang memuat sebuah isian2. checkerreport.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('checkerform');
}
public function actionProcess() {
$x = $_POST["X"];
$isPrime = $this>isPrime($x);
$data = array();
$data["isPrime"] = $isPrime;
$this>render('checkerreport', $data);
}
function isPrime($x) {
$isPrime = true;
$i = 2;
while ($i <= ($x/2) && $isPrime) {
$isPrime = ($x % $i > 0);
$i++;
}
return $isPrime;
}
}
C.2 checkerform
Folder : webapp/kunlun/protected/views/checker/File : checkerform.php
<form action="?r=checker/process" method="post">X : <input name="X"><input type="submit" value="Check !"/></form>
C.3 checkerreport.php
Folder : webapp/kunlun/protected/views/checker/File : checkerreport.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 CreateRetrieveUpdateDelete 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]