Beranda · Contact Us · Downloads

Yii: Upload File menggunakan model

Banyak cara yang bisa digunakan untuk sekedar menggunggah file ke dalam sistem. Salah satunya yang akan saya bahas di sini yaitu upload file menggunakan model. Di sini saya memanfaatkan class CUploadedFile yang sudah disediakan oleh yii.

1. Model
Langkah pertama yang mesti dilakukan adalah mendefinisikan attribut di dalam class yang digunakan. Kemudian definisikan pula validasi rulenya untuk memastikan extensi file yang bisa diunggah.
class Mahasiswa extends CActiveRecord
{
    public $image; 
    //......

public function rules()
    {
        return array(
          array('image','required','on'=>'create'),
          array('image','file','types'=>'jpg, gif, png',
            'allowEmpty'=>true,
            'maxSize'=>1024*1024*1,
            'tooLarge'=>'File terlalu besar, maksimal file 1 MB.'),
            //.......
          );
    }
}
2. View
Di dalam class form tambahkan kode untuk menampilkan field untuk mengunggah file.
<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'mahasiswa-form',
    'enableAjaxValidation'=>false,
    'htmlOptions'=> array('enctype'=>'multipart/form-data'),
)); ?>

<div>
    <?php echo $form->labelEx($model,'image');?>
    <?php echo $form->fileField($model,'image');?>
    <?php echo $form->error($model,'image');?>
</div>  
 
...........
 3. Controller
Kemudian di dalam controller definisikan action method
if(isset($_POST['Mahasiswa']))
   {
    $model->attributes=$_POST['Mahasiswa'];
    $gambar=CUploadedFile::getInstance($model,'image');
    $model->image=CUploadedFile::getInstance($model,'image');
    $nm_file=$model->image;

    if($model->save()){
      $gambar->saveAs(Yii::app()->basePath.'/../images/'.$nm_file);
      $this->redirect(array('view','id'=>$model->nim));
    }
}
Setelah berhasil mengunggah file, langkah selanjutnya adalah menampilkannya di view. Untuk menampilkan file gambar bisa menggunakan kode di bawah ini :
array('type'=>'raw',
      'label'=>'Foto',
      'value'=>html_entity_decode(CHtml::image(<Url_File>,'alt',
          array('width'=>85, 'height'=>85)))
),

Hasilnya :







Good Luck!

Artikel keren lainnya:

8 Tanggapan untuk "Yii: Upload File menggunakan model"

  1. om kok error sih pas copas koding di viewnya ??

    BalasHapus
  2. code buat nampilin gambarnya itu ditaruh dimana gan?

    BalasHapus
    Balasan
    1. protected/views/namamodel/view.php
      Letakkan di DetailView

      Hapus
  3. widget('zii.widgets.CDetailView', array(
    'data'=>$model,
    'attributes'=>array(
    'nim',
    'nama',
    'alamat',
    'create_time',
    'last_update_time',
    array('type'=>'raw',
    'label'=>'Foto',
    'value'=>html_entity_decode(CHtml::image(Yii::app()->baseUrl.'/images/'.$model->image,'alt',
    array('width'=>85, 'height'=>85)))
    ),
    ),
    )); ?>

    BalasHapus
  4. gan kalo buat terhubung ke databasenya gmna?

    BalasHapus
    Balasan
    1. Koneksi ke database maksudnya gan?

      setting di protected/config/main.php
      paste kode berikut :
      //database setting are configured in database.php
      'db'=>array(
      'class'=>'CDbConnection',
      'connectionString'=>'mysql:host=127.0.0.1;dbname=coba',
      'username'=>'root',
      'password'=>'',
      'tablePrefix'=>'tbl_',
      'emulatePrepare'=>true,
      ),

      Hapus
  5. coba script nampilkan gambarnya yg lengkap gan

    BalasHapus