Oct 282012
 

Assalamu’ alaikum wr wb

Yii upload images

Kali ini saya akan berbagi bagaimana cara upload gambar dengan menggunakan framework Yii (Yes It Is). Yii mempunyai banyak sekali extension yang dapat kita gunakan untuk mempermudah program yang akan kita buat. Untuk kali ini kita akan membuat upload image dengan menggunakan extension Upload yang sudah tersedia di Yii.

Yang di butuhkan :

  1. Apache.
  2. Yii Framework.
  3. Upload Extension.
Setelah download extension extrack semuake dalam folder extensions. Untuk penggunakan anda bisa membaca dalam link yang diats di upload extension. contoh :
// import the class
Yii::import('application.extensions.upload.Upload');

// receive file from post
$Upload = new Upload( (isset($_FILES['Filedata']) ? $_FILES['Filedata'] : null) );
$Upload->jpeg_quality  = 100;
$Upload->no_script     = false;
$Upload->image_resize  = true;
$Upload->image_x       = 700;
$Upload->image_y       = 500;
$Upload->image_ratio   = true;

// some vars
$newName  = date('YmdHis');
$destPath = Yii::app()->getBasePath().'/../images/gallery/';
$destName = '';

// verify if was uploaded
if ($Upload->uploaded) {
  $Upload->file_new_name_body = $newName;
  $Upload->process($destPath);

  // if was processed
  if ($Upload->processed) {
    $destName = $Upload->file_dst_name;

    // write image filename on table
    $photo = new Photo();
    $photo->gallery = $_POST['gallery_id'];
    $photo->image_normal = $destName;
    $photo->image_thumb  = 'thumb_' . $destName;
    $photo->save();

    // create the thumb
    unset($Upload);

    $Upload = new Upload($destPath.$destName);
    $Upload->file_new_name_body   = 'thumb_' . $newName;
    $Upload->no_script            = false;
    $Upload->image_resize         = true;
    $Upload->image_x              = 120;
    $Upload->image_y              = 80;
    $Upload->image_ratio          = true;
    $Upload->process($destPath);

  } else {
    echo($Upload->error)
  }
} else {
  echo('Select a file to send');
}
Ok selamat mencoba gitu saja ya untuk pengembangan silakan di buat sendiri ya.
Sumber : http://www.yiiframework.com

Wassalamu’ alaikum wr wb

Jul 262012
 

Setting page  CGridView di yii

Assalamu’ alaikum wr wb

Secara default setting page di CGridView 10 record, jika kita ingin mengganti setingan banyak limit atau jumlah record pada CGridView di bisa di lihat di script di bawah ini :

    public function search() {
        // Warning: Please modify the following code to remove attributes that
        // should not be searched.

        $criteria = new CDbCriteria;

        $criteria->compare('t_id', $this->t_id);
        $criteria->compare('t_user', $this->t_user, true);
        $criteria->compare('t_message', $this->t_message, true);
        $criteria->compare('date_entry', $this->date_entry, true);
        $criteria->order = "date_entry desc"; //Untuk mengurutkan data

        return new CActiveDataProvider(
            $this,
            array(
                'criteria' => $criteria,
                'pagination' => array(
                    'pageSize' => 4, // Banyak record yang akan di tampilkan
                ),
            )
        );
    }

Oke itu dulu semoga bermanfaat.

Wassalamu’ alaikum wr wb

Jul 162012
 

Composite Primary Key di yii

Assalamu’ alaikum wr wb

Pengertian dari Composite Primary Key adalah adalah kunci yang terdiri dari 2 atau lebih atribut yang secara unik mengidentifikasi suatu kejadian entitas. Setiap atribut yang membentuk kunci senyawa adalah kunci sederhana dalam haknya sendiri.

Untuk membuat crud dalam Yii secara default yii mengharuskan ada satu primary key, kalo ada 2 atau lebih key maka gii yang ada pada yii akan menolak.

Trus bagaimana caranya, Berikut adalah langkah – langkahnya.

edit controller, di sini saya punya table dengan nama tbl_dokter_obat dengan primary key ada pada [d_code, o_code].

    public function actionView($id, $id2) {
        $this->render('view', array(
            'model' => $this->loadModel($id, $id2),
        ));
    }
    public function actionUpdate($id,$id2) {
        $model = $this->loadModel(  $id,$id2 );

        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValidation($model);

        if (isset($_POST['DokterObat'])) {
            $model->attributes = $_POST['DokterObat'];
            if ($model->save())
                $this->redirect(array('view', 'id' => $model->d_code ,'id2'=>$model->o_code));
        }

        $this->render('update', array(
            'model' => $model,
        ));
    }
    public function actionDelete($id,$id2) {
        if (Yii::app()->request->isPostRequest) {
            // we only allow deletion via POST request
            $this->loadModel($id,$id2)->delete();

            // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
            if (!isset($_GET['ajax']))
                $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
        }
        else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }
    public function loadModel($id,$id2) {
        $model = DokterObat::model()->findByPk(array('d_code'=>$id,'o_code'=>$id2));
        if ($model === null)
            throw new CHttpException(404, 'The requested page does not exist.');
        return $model;
    }

Kode diatas di gunakan untuk CRUD
Setelah itu ubah juga pada tombol link yang ada pada view admin.

<?php $this->widget('zii.widgets.grid.CGridView', array(
	'id'=>'dokter-obat-grid',
	'dataProvider'=>$model->search(),
	'filter'=>$model,
	'columns'=>array(
		'dokter.o_name',
		'obat.o_name',
		'do_value',
		'user_entry',
		'date_entry',
		array(
			'class'=>'CButtonColumn',
			'template'=>'{view}{update}{delete}',
			'buttons'=>array
			(
				'view' => array
				(
					'url'=>'Yii::app()->createUrl("dokterobat/view", array("id"=>$data->d_code,"id2"=>$data->o_code))',
				),
				'update' => array
				(
					'url'=>'Yii::app()->createUrl("dokterobat/update", array("id"=>$data->d_code,"id2"=>$data->o_code))',
				),
				'delete' => array
				(
					'url'=>'Yii::app()->createUrl("dokterobat/delete", array("id"=>$data->d_code,"id2"=>$data->o_code))',
				),
			),
		),
	),
)); ?>

Kode di atas di gunakan untuk mengubah parameter pada tombol yang ada pada grid.
Oke selamat mencoba.

Wassalamu’ alaikum wr wb