[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…😀

11 Responses to [Yii Framework] Dropdownlist yang Terhubung Dengan Banyak Dropdownlist Lain

  1. lutfi says:

    Hai hai..bisa jalan gan..makasih banyak solusinya..moga2 makin lancar rejekinya..:D

  2. ianadewi says:

    gan script –> ‘url’=>CController::createUrl(‘/namaController/namaAction’),

    namaController/namaAction diisi apa? ga ngerti gan. ada error syntax error, unexpected ”=>CController::createUrl(” (T_CONSTANT_ENCAPSED_STRING), expecting ”

    Thanks

  3. Rahmadhani M says:

    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…

    dua buah dropdownlist yg dimaksud itu yg mana ya, Mas?
    maaf, nih, newbie udah ngikutin, tp buntu terus. di form cuma ada satu ddl. yg dua lg gimana code nya?

    thanks

    • jadi di contoh di atas di anggap kita punya misal dropdown1 gan, dimana kalo dropdown1 di pilih maka akan mempengaruhi dropdown2 dan dropdown3.. dua dropdownlist itu adalah yang 2 dan 3.

  4. Mas… ketemu error berikut:

    Undefined variable: form

    file view: monitoring.php

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    Facilitator
    Aspek Kelembagaan
    Aspek Sosial
    Aspek Ekonomi

    Propinsi:

    dropDownList($member,’kewarganegaraan’,
    CHtml::listData(Provinsi::model()->findAll(), ‘id’, ‘nama’),
    array(’empty’ => ‘choose :’,
    ‘ajax’ => array(
    ‘type’=>’POST’,
    ‘dataType’=>’json’,
    ‘url’=>CController::createUrl(‘/site/namaAction’),
    ‘data’ => “js:{haha:$(this).val()}”,
    ‘success’=>’function(data){
    $(“#Member_provinsi”).html(data.prov);
    $(“#Member_kota”).html(data.kab);
    $(“#Member_kecamatan”).html(data.kec);
    $(“#Member_desa”).html(data.desa);
    }’,
    )));
    ?>

    Kabupaten

    Select a Kabupaten
    France
    Germany
    Italy
    Japan
    Russian
    United State
    United Kingdom
    Other

    Kecamatan

    Select a Kecamatan
    France
    Germany
    Italy
    Japan
    Russian
    United State
    United Kingdom
    Other

    Desa/Kelurahan

    Bulan/Tahun

    Kunjungan pada minggu ke-:

    1

    2

    3

    4

    Address

    City

    Country

    Select a country
    France
    Germany
    Italy
    Japan
    Russian
    United State
    United Kingdom
    Other

    Address

    City

    Country

    Select a country
    France
    Germany
    Italy
    Japan
    Russian
    United State
    United Kingdom
    Other

    Address

    City

    Country

    Select a country
    France
    Germany
    Italy
    Japan
    Russian
    United State
    United Kingdom
    Other

    Save

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    Controller: SiteController.php

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

    public function actionNamaaction()
    {
    $prov=”;
    $kab=”;
    $kec=”;
    $data=Provinsi::model()->findAllByAttributes(array(‘namaAttribute’=>$_POST[‘nama’]));
    $data=CHtml::listData($data,’id’,’nama’);

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

    $data2=Kabupaten::model()->findAllByAttributes(array(‘namaattribute’=>$_POST[‘nama’]));
    $data2=CHtml::listData($data2, ‘id’,’id_prov’,’nama’);
    foreach($data2 as $value=>$name)
    {
    $kab.=CHtml::tag(‘option’,
    array(‘value’=>$value),CHtml::encode($name),true);
    }

    $data3=Kecamatan::model()->findAllByAttributes(array(‘namaattribute’=>$_POST[‘nama’]));
    $data3=CHtml::listData($data2,’id’,’id_kabkota’,’nama’);
    foreach($data2 as $value=>$name)
    {
    $kab.=CHtml::tag(‘option’,
    array(‘value’=>$value),CHtml::encode($name),true);
    }

    $data4=Desa::model()->findAllByAttributes(array(‘namaattribute’=>$_POST[‘nama’]));
    $data4=CHtml::listData($data2,’id’,’id_kecamatan’,’nama’);
    foreach($data2 as $value=>$name)
    {
    $kab.=CHtml::tag(‘option’,
    array(‘value’=>$value),CHtml::encode($name),true);
    }

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

    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  5. Mas… yang tampil cuma dropdown pertama… untuk dropdown 2 dan 3 tidak tampil napa ya?

    Error: Failed to load resource: the server responded with a status of 403 (Forbidden) http://localhost/xxx/index.php?r=monitoring/daerah

  6. heris says:

    mas, bisa contohin gak, buat dropdown tapi datanya dari dua model,??

  7. heris says:

    untuk value nya dari model pertama dan yang ditampilkan dari model kedua..

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: