[Yii Framework] Auto Save Data By Time

Anda pernah ng blog di wordpress atau blogspot? yah.. jika anda membuat sebuah postingan baru, maka postingan anda akan selalu disimpan secara otomatis oleh sistem mereka walaupun anda belum menekan tombol save. Nah, bagaimana cara membuatnya pada Yii Framework untuk website anda? Berikut caranya :

Pertama buatlah sebuah tabel beserta genarate model dan operasi CRUD nya pada Yii Framework. Setelah itu pada view anda akan ada tampilan file create.php, view.php, update.php, dan lain-lain.. Karena kita ingin ingin melakukan otomatis penyimpanan berdasarkan waktu, maka pada file “create.php”, tambahkan code berikut :

<script type="text/javascript">
  setInterval(
     function(){
        var statusnya=$("#statuta").val(); // mengetahui status apakah sedang ada fungsi autosave yang sedang berjalan
        if(statusnya!="on")  // jika tidak ada fungsi yang berjalan, maka jalankan fungsi
        {
           $("#btn-save").attr("disabled",true);  // selama fungsi berjalan, user tidak bisa menekan tombol save
           var data1 = $("#Namamodel_data1").val();  // menangkap nilai dari form input
           var data2 = $("#Namamodel_data2").val();
           $.ajax({
              url: "<?php echo Yii::app()->createUrl('namaController/namaAction')?>",  // memanggil sebuah fungsi untuk autosave
              type:"post",
              dataType :"json",
              data:{"data1" : data1,"data2":data2},
              beforeSend: function() {
                    $("#statuta").val("on");
              },
              success : function(data){
                    $("#statuta").val("off");
                    if(data.satu.length > 0){
                       window.location=data.satu;  // jika data berhasil disimpan, maka akan redirect
                    }
                    else{
                       $("#btn-save").attr("disabled",false);
                    }
              },
          });
       }
    }, 
    15000  // operasi auto save dilakukan 15 detik sekali
  );
</script>

Lalu pada form anda akan ada code form seperti berikut :

<?php echo CHtml::hiddenField('statuta','');?>
<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
   'enableAjaxValidation'=>true,
)); ?>
    <?php echo CHtml::submitButton('Save',array('id'=>'btn-save')); ?>
    <p class="note">Fields with <span class="required">*</span> are required.</p>
    <?php echo $form->errorSummary($model); ?>
    <table class="nostyle">
       <tbody>
         <tr>
            <td class="va-top"><?php echo $form->labelEx($model,'data1'); ?></td>
            <td><?php echo $form->textArea($model,'data1',array('rows'=>6, 'cols'=>50)); ?>
            <?php echo $form->error($model,'data1'); ?></td>
        </tr>
        <tr>
           <td class="va-top"><?php echo $form->labelEx($model,'data2'); ?></td>
           <td><?php echo $form->textArea($model,'data2',array('rows'=>6, 'cols'=>50)); ?>
           <?php echo $form->error($model,'data2'); ?></td>
        </tr>
      </tbody>
    </table>
<?php $this->endWidget(); ?>
</div>

Penjelasan : Penjelasan code di atas dapat anda lihat pada script tersebut.

Nah, kemudian kita buat sebuah fungsi pada controller yang telah di panggil via AJAX pada code di atas. Pada sebuah controller, buatlah code berikut :

public function actionNamaaction()
{
  $satu='';
  $model=new Namamodel;
 
  $model->data1 = $_POST['data1'];
  $model->data2 = $_POST['data2'];
 
  if($model->save())
  {
      $satu=$this->createUrl('update',array('id'=>$model->id));
  }
 
  echo CJSON::encode(array
  (
     'satu'=>$satu,
  ));
  Yii::app()->end();
}

 

Pada code di atas, kita menyimpan data yang telah kita input pada form sebelumnya. Nah, setelah data sudah disimpan, page akan langsung di redirect halaman “update” untuk data yang telah tersimpan tadi…

 

Selesai.. Selamat mencoba…

Semoga membantu…🙂

3 Responses to [Yii Framework] Auto Save Data By Time

  1. Pingback: [Yii Framework] Refresh Data Pada UI Tanpa Refresh Halaman (seperti Facebook and Twitter) « Sabitlabscode

  2. andri says:

    gimna caranya, ngepost pake waktu, misa saya simpan hari ini , besoknya baru bisa di publish secara otomatis, bisa dilihat oleh semua pengguna kayak di blogger,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: