-->

Membuat checkbox dengan fungsi ajax di yiiframework

Pada kesempatan ini ane ingin memberikan sedikit penjelasan menggnakan checkbox untuk digunakan sebagai komponen untuk memuat data dari url suatu controller dalam model kita. Nah untuk mendapatkan ini di yii sudah disediakan fungsi CHtml::checkbox atau CHtml::activeCheckbox.Agar dapat diberikan fungsi ajax kita dapat memberikan property ajax di dalam html optionnya. Tetapi setelah digunakan checkbox tersebut tidak dapat diklik nah ini masalah yang muncul karena pada waktu mengenerate code yii membuat fungsi di akhir statement javascript dengan return false, yang membuat checkbox ini tidak dapat dicheck.

Oleh karena itu kita dapat menggunakan salah satu cara dengan menggunakan modifikasi dari skrip kita sendiri.. Contoh yang ane implementasikan dapat dilihat sebagai berikut : (view)


<?php echo CHtml::checkBox("load_ajax",false,array('id'=>'load_risk_all'));echo "Load All Risk Child";
$url=CController::createUrl('project/vieweach',array('project_id'=>$model->project_id));
Yii::app()->clientScript->registerScript("check",
           '$("#load_risk_all").change(function(){
             if($(this).is(":checked")){
              $("#load_risk").load("'.$url.'");
              $("#load_risk").fadeIn();
             }else{
              $("#load_risk").html("");
             }
             })
          ',
           CClientScript::POS_READY);

?>
<div id="load_risk">
</div>

Dan pastikan bahwa pada waktu memanggil url yang kita inginkan tersebut kita menggunakan fungsi renderPartial agar html yang kita inginkan sesuai. Kita juga dapat mengganti fungsi load() dengan menggunakan fungsi jquery $.ajax apabila kita ingin mengirimkannya berserta data kita. Bisa diihat di controller kita di ProjectController misalnya jangan lupa untuk menambahkan rules untuk hak aksesnya..
public function accessRules()
    {
        return array(
        array('allow',  // allow all users to perform 'index' and 'view' actions
                'actions'=>array('index','view','vieweach'),//tambahkan view each disini
                'users'=>array('@'),
        ),

Nah ini untuk controllernya

public actionViewEach($project_id){ 
  $criteria=new CDbCriteria();
  $criteria->addColumnCondition(array('project_id'=>$project_id)); 
  $provider=new CActiveDataProvider('Project',array('criteria'=>$criteria));
  $this->renderPartial('/risk/view_each',array('provider'=>$provider),false,true);
} 


Anda juga dapat menggunakan onChange pada property html di checkbox untuk memberikan fungsi javascirpt anda sendiri

<?php echo CHtml::checkbox("load risk",false,array("onChange"=>"js:yourcustomfunction()")); ?> //jangan lupa untuk meregister yourcustomfunction menggunakan registerScript


Selamat mencoba
Facebook Comments

2 komentar

mau kasih masukkan gan, mungkin yg udah kenal yii tau cara meletakkan code yg agan kasih, tp bagi pemula bakalan bingung, saran ane tolong dikasih tau letak naro coding nya secara detail.. :)

Balas

oke gan.. bisa diterima sarannya..

Balas