Cara Membuat Aplikasi Baru Menggunakan Yii Framework PHP
Cara Membuat Aplikasi Baru Menggunakan Yii Framework PHP
// 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
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
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 © <?php date_default_timezone_set('UTC');
andrekarnyoto@yahoo.com RedSpam
Pada file
protected/config/main.php
'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
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>
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)); }
?></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
Andrea Stevens Karnyoto (Yii Framework) Catatan Belajar.. Setelah itu buat crud generatornya
andrekarnyoto@yahoo.com RedSpam
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
Dan untuk membuat labelnya berubah sesuai dengan yang kita inginkan maka dapat ditambahkan seperti dibawah ini :
public function attributeLabels() { return array( 'Id' => 'Nomor',
andrekarnyoto@yahoo.com RedSpam
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, )); }
//
andrekarnyoto@yahoo.com RedSpam
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', ) ); ?>
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'), ); }
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, )); }
andrekarnyoto@yahoo.com RedSpam
andrekarnyoto@yahoo.com RedSpam