Andrea Stevens Karnyoto (Yii Framework) [email protected]
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) [email protected]
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-folde r'); // This is the main Web application configuration. Any writable // CWebApplication properties can be configured her e. 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) [email protected]
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 © <?php date_default_timezone_set( 'UTC' );
Andrea Stevens Karnyoto (Yii Framework) [email protected]
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) [email protected]
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) [email protected]
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) [email protected]
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) [email protected]
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) [email protected]
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 att ributes 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 b e 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) [email protected]
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 rem ove 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,tru e); return new CActiveDataProvider(get_class( $this), array( 'criteria' =>$criteria, )); }
Andrea Stevens Karnyoto (Yii Framework) [email protected]
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) [email protected]
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 att ributes 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) [email protected]
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) [email protected]
Catatan Belajar.. RedSpam
Klo tampak edit nya seperti ini
Andrea Stevens Karnyoto (Yii Framework) [email protected]
Catatan Belajar.. RedSpam