Anda di halaman 1dari 15

Andrea Stevens Karnyoto (Yii Framework) andrekarnyoto@yahoo.

com
Catatan Belajar.. RedSpam

// tanggal 20-12-2010

Membuat aplikasi web memang membutuhkan kesabaran tingkat tinggi apalagi kalau harus
menggunakan php yang tanpa framework,. Tapi dengan bermunculannya banyak framework maka
dapat memudahkan permasalahan-permasalahan coding.. kebetulan saya browsing tentang framework
apa yang paling lengkap, mudah dan bagus maka jawabannya adalah yii framework.. tapi menurutku
masih termasuk susah karena belum biasa dengan MVC hehehehe..

tapi walaupun belum jago saya akan membagi sedikit risetku tentang apa kira2 yang paling bikin kendala
dalam Yii Framework, saya yakin teman2 yang baru belajar jg paling tidak mengalami kendala yang sama
..

yang dibutuhkan disini adalah beberapa tools, yaitu apache, php, dan mysql nah klo mo yang langsung
bisa pake xampp aja donload disini

http://www.apachefriends.org/en/xampp-windows.html

juga editornya saya pake eclipse helios yang khusus buat php aja(

Eclipse for PHP Developers, 141 MB

), bisa di donload disini

selamat mencoba deh, tutorial ini boleh di pake .. moga bermanfaat.. ☺

Cara membuat aplikasi baru menggunakan yii framework php

Ketikkan pada command

Php.exe yii\framework\yiic.php webapp testdrive

Create a web application under “c....” [yes/no] Y


Andrea Stevens Karnyoto (Yii Framework) andrekarnyoto@yahoo.com
Catatan Belajar.. RedSpam

Setting Database

<?php
//File: protected/config/main.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'=>'PHP/MySQL Development',
'defaultController'=>'post',

// preloading 'log' component


'preload'=>array('log'),

// autoloading model and component classes


'import'=>array(
'application.models.*',
'application.components.*',

),

// application-level parameters that can be accessed


Andrea Stevens Karnyoto (Yii Framework) andrekarnyoto@yahoo.com
Catatan Belajar.. RedSpam
// using Yii::app()->params['paramName']
'params'=>require(dirname(__FILE__).'/params.php'),

// application components
'components'=>array(
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'levels'=>'error, warning',
),
),
),
'user'=>array(
// enable cookie-based authentication
'allowAutoLogin'=>true,
// force 401 HTTP error if authentication needed
'loginUrl'=>null,
),
'db'=>array(
'class'=>'CDbConnection',

'connectionString'=>'mysql:host=myDatabaseHost;dbname=myDatabasename',
'username' => 'myUsername',
'password' => 'myPassword'
),
'urlManager'=>array(
'urlFormat'=>'path',
'rules'=>array(
'tag/<tag>'=>'post/list',
'posts'=>'post/list',
'post/<id:\d+>'=>'post/show',
'post/update/<id:\d+>'=>'post/update',
),
),
'cache'=>array(
'class'=>'system.caching.CDbCache',
),
),
);

Ada error yang terjadi pada saat Yii dijalan kan yaitu pada file :

protected/views/layouts/main.php

tambahkan

date_default_timezone_set('UTC');

pada

Copyright &copy; <?php date_default_timezone_set('UTC');


Andrea Stevens Karnyoto (Yii Framework) andrekarnyoto@yahoo.com
Catatan Belajar.. RedSpam
echo date('Y'); ?> by My Company.<br/>
All Rights Reserved.<br/>

Pada file

protected/config/main.php

aktifkan giarray dengan menhilangkakan tanda /* */ nya.

'modules'=>array(
// uncomment the following to enable the Gii tool
/*
'gii'=>array(
'class'=>'system.gii.GiiModule',
'password'=>'Enter Your Password Here',
),
*/
),

Dan masuk di http://localhost/testdrive/

Serta di http://localhost/testdrive/index.php?r=gii

Untuk membuat conroller dan lain lain

B
Andrea Stevens Karnyoto (Yii Framework) andrekarnyoto@yahoo.com
Catatan Belajar.. RedSpam

Buat kontroller dengan nama greeting lalu pada file ini buat seperti ini

/Test Drive/protected/views/greeting/index.php

<?php
$this->breadcrumbs=array(
'Greeting',
);?>
<h1><?php echo "Hello World" ?></h1>

Maka hasilnya akan seperti ini :


Andrea Stevens Karnyoto (Yii Framework) andrekarnyoto@yahoo.com
Catatan Belajar.. RedSpam

Nah sekarang kita akan coba mengirim data dari controller ke view

Contohnya seperti dibawah ini :

Pada file /Test Drive/protected/controllers/GreetingController.php

Tambahkan seperti dibawah ini :

public $pesan = "Pesan Ini Saja";


public function actionIndex()
{
$this->render('index', array('content'=>$this->pesan));
}

Dan pada /Test Drive/protected/views/greeting/index.php

<?php
$this->breadcrumbs=array(
'Greeting',
);?>
<h1><?php echo $content; ?></h1>

Atau bisa ditulis seperti dibawah ini :

<?php
$this->breadcrumbs=array(
'Greeting',
);?>
<h1><?php echo $this->pesan; ?></h1>

// tanggal 21-12-2010

Bagaimana cara membuat database dan bagaimana menghubungkannya dengan yi framewok


Andrea Stevens Karnyoto (Yii Framework) andrekarnyoto@yahoo.com
Catatan Belajar.. RedSpam

Sekarang masuk pada gii module

Caranya

http://localhost/testdrive/index.php?r=gii

Buat model generatornya dulu dengan cara klik model generator

Pilih preview lalu pilih generate


Andrea Stevens Karnyoto (Yii Framework) andrekarnyoto@yahoo.com
Catatan Belajar.. RedSpam

Setelah itu buat crud generatornya

Pilih preview lalu pilih generate

Nah sekarang boleh liat hasilnya dengan cara

http://localhost/testdrive/index.php?r=siswa

nah untuk menambahkan bahwa field tersebut dibutuhkan atau harus diisi maka tambahkan pada file
Andrea Stevens Karnyoto (Yii Framework) andrekarnyoto@yahoo.com
Catatan Belajar.. RedSpam

/protected/models/Orang.php

Atau file baris para rules() seperti ini

array('nama, tanggal', 'required'),

jadi kira kira hasilnya seperti ini

public function rules()


{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('nama, tanggal', 'required'),
array('nama', 'length', 'max'=>100),
array('tanggal' , 'safe'),
// The following rule is used by search().
// Please remove those attributes that should not be
searched.
array('Id, nama, tanggal', 'safe', 'on'=>'search'),
);

Coba lagi dan jika fieldnya ga disini tapilannya seperti ini

Dan untuk membuat labelnya berubah sesuai dengan yang kita inginkan maka dapat ditambahkan
seperti dibawah ini :

public function attributeLabels()


{
return array(
'Id' => 'Nomor',
Andrea Stevens Karnyoto (Yii Framework) andrekarnyoto@yahoo.com
Catatan Belajar.. RedSpam
'nama' => 'Nama Pengguna',
'tanggal' => 'Tanggal Lahir',
);

Maka hasilnya dapat dilihat seperti dibawah ini :

Jika ingin membuat agar sebuah field tidak dapat dicari pada manage input box search maka kita tinggal
menghilangkan baris program seperti dibawah ini

public function search()


{
// Warning: Please modify the following code to remove attributes
that
// should not be searched.

$criteria=new CDbCriteria;

$criteria->compare('Id',$this->Id);
$criteria->compare('nama',$this->nama,true);
// $criteria->compare('tanggal',$this->tanggal,true);

return new CActiveDataProvider(get_class($this), array(


'criteria'=>$criteria,
));
}
Andrea Stevens Karnyoto (Yii Framework) andrekarnyoto@yahoo.com
Catatan Belajar.. RedSpam

Tanggal 22-12-2010

Memasukkan extensi input tanggal :

Masukkan file EHtmlDateSelect.php pada folder /Test Drive/protected/extensions lalu

Untuk menyisipkan field tertentu tinggal mengetik program seperti dibawah ini pada file
/protected/views/orang/_form.php

<?php echo $form->textField($model,'tanggal'?>


Dengan yang ini

<?php
date_default_timezone_set('UTC');
$this->widget('application.extensions.EHtmlDateSelect',
array(
'time'=> $model->tanggal,
'field_array'=> 'ItemDate',
'prefix'=>'',
'field_order'=>'DMY',
'end_year'=>'+2',
)
);
?>

Sehingga jadinya seperti ini


Andrea Stevens Karnyoto (Yii Framework) andrekarnyoto@yahoo.com
Catatan Belajar.. RedSpam
<div class="row">
<?php echo $form->labelEx($model,'tanggal'); ?>
<?php
date_default_timezone_set('UTC');
$this->widget('application.extensions.EHtmlDateSelect',
array(
'time'=> $model->tanggal,
'field_array'=> 'ItemDate',
'prefix'=>'',
'field_order'=>'DMY',
'end_year'=>'+2',
)
);
?>
<?php echo $form->error($model,'tanggal'); ?>
</div>

Dan pada file /protected/models/Orang.php

Tambahkan satu fungsi untuk menginput sebuah variabel

public $tgllahir;

public function simpan($tgl)


{
$this->tgllahir = $tgl;
}

protected function beforeSave()


{

$this->tanggal = $this->tgllahir['Year'].'-'. $this-


>tgllahir['Month'].'-'.$this->tgllahir['Day'] ;
return true;
}

Serta ubah bagian public function rules() :


Mejadi

public function rules()


{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('nama', 'required'),
array('nama', 'length', 'max'=>100),
array('nama, tanggal', 'safe', 'on'=>'search'),
);
}
Andrea Stevens Karnyoto (Yii Framework) andrekarnyoto@yahoo.com
Catatan Belajar.. RedSpam

Serta dalam file /protected/controllers/OrangController.php sisipkan baris program yang berwarna


merah ..

public function actionUpdate($id)


{
$model=$this->loadModel($id);

// Uncomment the following line if AJAX validation is needed


// $this->performAjaxValidation($model);

if(isset($_POST['Orang']))
{
$model->attributes=$_POST['Orang'];
$model->simpan($_POST['ItemDate']);
if($model->save())
$this->redirect(array('view','id'=>$model->Id));
}

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

Dan

public function actionCreate()


{
$model=new Orang;

// Uncomment the following line if AJAX validation is needed


// $this->performAjaxValidation($model);

if(isset($_POST['Orang']))
{
$model->attributes=$_POST['Orang'];
$model->simpan($_POST['ItemDate']);
if($model->save())
$this->redirect(array('view','id'=>$model->Id));
}

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

Hasil akhirnya tampak seperti ini :


Andrea Stevens Karnyoto (Yii Framework) andrekarnyoto@yahoo.com
Catatan Belajar.. RedSpam

Klo tampak edit nya seperti ini


Andrea Stevens Karnyoto (Yii Framework) andrekarnyoto@yahoo.com
Catatan Belajar.. RedSpam