Anda di halaman 1dari 15

Andrea Stevens Karnyoto (Yii Framework) Catatan Belajar..

// tanggal 20-12-2010

andrekarnyoto@yahoo.com RedSpam

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) Catatan Belajar..

andrekarnyoto@yahoo.com 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) Catatan Belajar..


// using Yii::app()->params['paramName'] 'params'=>require(dirname(__FILE__).'/params.php'),

andrekarnyoto@yahoo.com RedSpam

// 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) Catatan Belajar..


echo date('Y'); ?> by My Company.<br/> All Rights Reserved.<br/>

andrekarnyoto@yahoo.com RedSpam

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) Catatan Belajar..

andrekarnyoto@yahoo.com 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) Catatan Belajar.. 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 :

andrekarnyoto@yahoo.com RedSpam

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) Catatan Belajar.. Sekarang masuk pada gii module Caranya http://localhost/testdrive/index.php?r=gii

andrekarnyoto@yahoo.com RedSpam

Buat model generatornya dulu dengan cara klik model generator

Pilih preview lalu pilih generate

Andrea Stevens Karnyoto (Yii Framework) Catatan Belajar.. Setelah itu buat crud generatornya

andrekarnyoto@yahoo.com RedSpam

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) Catatan Belajar.. /protected/models/Orang.php Atau file baris para rules() seperti ini
array('nama, tanggal', 'required'),

andrekarnyoto@yahoo.com RedSpam

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) Catatan Belajar..


'nama' => 'Nama Pengguna', 'tanggal' => 'Tanggal Lahir', );

andrekarnyoto@yahoo.com RedSpam

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) Catatan Belajar..

andrekarnyoto@yahoo.com 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) Catatan Belajar..

andrekarnyoto@yahoo.com 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 Mejadi public function rules() :

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) Catatan Belajar..

andrekarnyoto@yahoo.com 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) Catatan Belajar..

andrekarnyoto@yahoo.com RedSpam

Klo tampak edit nya seperti ini

Andrea Stevens Karnyoto (Yii Framework) Catatan Belajar..

andrekarnyoto@yahoo.com RedSpam

Anda mungkin juga menyukai