Membuat DropDown ComboBox Dependent Yii Framework

Sering pada sebuah aplikasi kita perlu membuat Dropdown Select yang ketika dipilih akan mempengaruhi dropdown select lainnya, contoh implementasi realnya adalah ketika memilih dropdown select nama propinsi akan mempengaruhi dropdown select kabupaten dan dropdown select kabupaten terpilih akan mempengaruhi dropdown select kecamatan dan seterusnya.

Berikut contoh ERD dari kasus diatas :

Framework YII memudahkan anda untuk membuat form seperti kasus ini , berikut skirp kode nya

  1. Skrip di Viewnya : _form.php
    <div class="simple">
    
    <?php $form=$this->beginWidget('CActiveForm', array(
    	'id'=>'kecamatan',
    	'enableAjaxValidation'=>false,
    )); ?>
    
    <?php 
    
    echo CHtml::dropDownList('idpropinsi','',
        CHtml::listData(Provinsi::model()->findAll(),'idpropinsi','prov_name'),
     array(
    
    'prompt'=>'Pilih Propinsi',          //
    
    'value'=>'0',
    
    'ajax' => array(
    
    'type'=>'POST', //request type
    
    'url'=>CController::createUrl('filterkab'), // panggi filter kabupaten di controller
    
    'update'=>'#Kecamatan_'.idkabupaten, //selector to update
    
    'data'=>array('idpropinsi'=>'js:this.value'),
    
    ))); ?>
    
    </div>
    
    <div class="simple">
    
    <?php 
    
    echo $form->dropDownList($model,'idkabupaten',
                CHtml::listData(Kabupaten::model()->findAll(),'kab_id','kab_name'),
     array(
    
    'prompt'=>'Pilih Kabupaten',          //
    
    'value'=>'0',
    
    'ajax' => array(
    
    'type'=>'POST', //request type
    
    'url'=>CController::createUrl('filterkec'), // panggil method di controller 
    
    'update'=>'#Kecamatan_'.idkecamatan, //selector to update
    
    'data'=>array('idkabupaten'=>'js:this.value'),
    
    ))); ?>
    
    </div>
    
    <?php echo $form->dropDownList($model,'idkecamatan',array(),
     array( 'prompt'=>'Pilih Dulu.','value'=>'0')) ?>
    
    </div>
    <?php $this->endWidget(); ?>
    
  2. Kode Pada Controller ( KecamatanController ), didalamnya terdapat fungsi yang memfilter kecamatan dan kabupaten
    -----
    public function actionFilterkab()
    	{
    
      	   $data=Kabupaten::model()->findAll('idpropinsi=:idpropinsi',
                         array(':idpropinsi'=>(int) $_POST['idpropinsi']));
    
        	   $data=CHtml::listData($data,'idkabupaten','nama');
        	   foreach($data as $value=>$name)
        	   {
            	echo CHtml::tag('option',array('value'=>$value),CHtml::encode($name),true);
        	   }	
    
    	}
    
    	public function actionFilterkec()
    	{
    
      	   $data=Kecamatan::model()->findAll('idkabupaten=:idkabupaten',
                        array(':idkabupaten'=>(int) $_POST['idkabupaten']));
    
        	   $data=CHtml::listData($data,'idkecamatan','nama');
        	   foreach($data as $value=>$name)
        	   {
            	echo CHtml::tag('option',array('value'=>$value),CHtml::encode($name),true);
        	   }
    	}	
    
    -----
    

There Are 7 Responses So Far. »

  1. Makasih sharing ilmunya….

  2. Tq masbro, tambah lg donk yii tutornya.. :D

  3. Maaf mas itu skrip view untuk _form.php viewnya pada foldel kecamatan ya

  4. ya mas jaja .. skripnya ada di direktori protected/views/kecamatan dan file viewnya _form.php atau bisa juga file lain ..

  5. thanks tutorialnya pak bro…tolong ditambah lagi ya.., kalo bisa untuk kasus input detail transaksi dalam satu form dengan yi…

  6. Capek dan muter2 ampe lama akhirnya ketemu di sini… thank banget ya.

    Sukses selalu.

  7. Oke jika Anda punya waktu, saya akan mencoba menjabarkan dengan cara yang sederhana. Jangan takut karena ternyata begitu mudahnya membuat Dependent Dropdown tanpa extension luar.. yap from scracth..

Post a Response