Cara Membuat Fungsi Upload File atau Gambar di YII

3 Langkah Sederhana untuk Membuat Fungsi Fasilitas Upload File / Gambar di YII - Kemudahan menggunakan framwork yii didukung oleh fitur yang telah disediakan pada library yii. tutorial kali ini akan membahas bagaimana cara membuat fungsi atau fitur upload di yii.

File yang dapat di upload bisa berupa dokumen seperti doc, docx, xls, pdf dan gambar seperti png, jpg dan gif semua file dapat diupload hanya dengan mengatur konfirgurasi pada rules sehingga file apapun dapat di upload di yii, berikut adalah tutorial cara upload file di yii:

cara upload file di yii, upload gambar dengan yii, tutorial, php

Langkah Pertama (Modifikasi Controller)
Buka Controller yang akan anda tambahkan fitur upload di yii (disini saya menggunakan controller yang sudah di generate oleh GII, dengan nama UseraccountsController.php), kemudian cari method actionCreate() dan secara default (tanpa modifikasi) method akan terlihat seperti berikut:
public function actionCreate()
{
$model=new Useraccounts;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Useraccounts']))
{
$model->attributes=$_POST['Useraccounts'];
if($model->save())
{
$this->redirect(array('view','id'=>$model->id_user));
}
}
$this->render('create',array(
'model'=>$model,
));
}

2. Kemudian Tambahkan Script Upload berikut di dalam controller, pada actionCreate() kodenya seperti berikut
$model->gambar=CUploadedFile::getInstance($model,'gambar');

dan
$model->gambar->saveAs(Yii::getPathOfAlias('webroot').'/image/'.$model->gambar);

tambahkan pada method actionCreate() di controller sehingga menjadi seperti berikut:
public function actionCreate()
{
$model=new Useraccounts;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Useraccounts']))
{
$model->attributes=$_POST['Useraccounts'];
$model->gambar=CUploadedFile::getInstance($model,'gambar');
if($model->save())
{
$model->gambar->saveAs(Yii::getPathOfAlias('webroot').'/image/'.$model->gambar);
$this->redirect(array('view','id'=>$model->id_user));
}
}
$this->render('create',array(
'model'=>$model,
));
}

Langkah Kedua (Modifikasi Model)
Buka model yang akan anda tambahkan fitur / fungsi upload, lagi-lagi disini saya menggunakan model Useraccounts.php 

Kemudian cari method rules() tambahkan potongan script dibawah ini ke dalam kode return array():
array('gambar', 'file', 'types'=>'jpg, gif, png','allowEmpty'=> true,'safe'=>true),

Langkah Ketiga (Modifikasi View)
Buka file _form.php pada fungsi yang akan anda rubah menjadi fitur upload, kemudian cari script textbox seperti dibawah ini
<div class="row"> <?php echo $form->labelEx($model,'gambar'); ?>
<?php echo $form->textField($model,'gambar',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'gambar'); ?>
</div>

Rubah textfield tersebut menjadi tombol upload dengan cara memanipulasi textField jadi fileField sehingga tampak pada kode dibawah ini
<div class="row"> <?php echo $form->labelEx($model,'gambar'); ?>
<?php echo $form->fileField($model,'gambar',array('size'=>50,'maxlength'=>50)); ?>
<?php echo $form->error($model,'gambar'); ?>
</div>
Masih di file yang sama yaitu _form.php geser kursor ke bagian atas dan anda akan menemukan kode seperti berikut:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'useraccounts-form',
'enableAjaxValidation'=>false,
)); ?>

tambahkan script 
'htmlOptions' => array('enctype' => 'multipart/form-data','autocomplete'=>'off'),

sehingga menjadi seperti berikut
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'useraccounts-form',
'htmlOptions' => array('enctype' => 'multipart/form-data','autocomplete'=>'off'),
'enableAjaxValidation'=>false,
)); ?>

Apabila berhasil tampilan form pada textfield gambar akan merubah menjadi fileupload gambar, selamat mencoba, jangan lupa follow @mugirachmat setiap jam saya update informasi teknologi. 
Mau Tanya ? Silahkan Klik Disini

2 comments