[Yii Framework] Dropdownlist yang Terhubung Dengan Banyak Dropdownlist Lain

Cukup tertarik dengan pertanyaan yang ada disini, maka saya rasa lebih bagus kalo jawabnnya dibuat postingan saja..

Misal, ketika kita memilih suatu dropdownlist, kita ingin dropdownlist tersebut otomatis langsung mengeset nilai di DUA buah dropdownlist yang lain berdasarkan nilai yang sudah kita pilih..

Pada tampilan dropdownlist, masukkan kode berikut :

echo $form->dropDownList($member,'kewarganegaraan',
   CHtml::listData(Negara::model()->findAll(), 'id', 'negara'),
     array('empty' => 'choose :',
       'ajax' => array(
       'type'=>'POST',
       'dataType'=>'json',
       'url'=>CController::createUrl('/namaController/namaAction'),
       'data' => "js:{haha:$(this).val()}",
       'success'=>'function(data){
           $("#Member_provinsi").html(data.satu);
           $("#Member_kota").html(data.dua);
       }',
 )));

Penjelasan : code di atas akan mengeset dropdownlist yang memiliki inisial  “Member_provinsi” dan “Member_kota”. Kedua nilai tersebut akan memanggil fungsi yang terdapat dalam suatu controller..

Nah, kemudian pada controller buat action berikut  :

 public function actionNamaaction()
 {
    $satu='';
    $dua='';
    $data=NamaModel1::model()->findAllByAttributes(array('namaAttribute'=>$_POST['haha']));
    $data=CHtml::listData($data,'id','provinsi');

    foreach($data as $value=>$name)
    {
      $satu.= CHtml::tag('option',
        array('value'=>$value),CHtml::encode($name),true);
    }

    $data2=NamaModel2::model()->findAllByAttributes(array('namaattribute'=>$_POST['haha']));
    $data2=CHtml::listData($data2,'id','kota');
     foreach($data2 as $value=>$name)
     {
         $dua.=CHtml::tag('option',
           array('value'=>$value),CHtml::encode($name),true);
     }

     echo CJSON::encode(array
     (
         'satu'=>$satu,
         'dua'=>$dua
      ));
      Yii::app()->end();
 }

Kode di atas akan mengembalikan sebuah nilai dengan tipe JSON, dimana kedua nilai itu kemuadian akan digunakan untuk mengeset dua buah dropdownlist yang sudah kita tentukan tadi…

Selesai… selamat mencoba…

Semoga membantu yak… 😀

Advertisements
%d bloggers like this: