[Yii Framework] Dropdownlist yang Terhubung

Tujuan dari posting ini tidak berbeda dengan postingan ini, hanya saja saya akan menunjukkan cara lain untuk melakukannya yang menurut saya lebih mudah untuk dipahami..

Yah, misal seperti kasus tersebut, kita memiliki tabel “Provinsi” dan “Kota” dimana kota yang dipilih harus sesuai dengan provinsi yang telah dipilih. Anggaplah saya sudah memiliki dua buah attribut kota dan provinsi. Hal pertama yang harus kita lakukan adalah membuat action yang akan dijalankan ketika attribut provinsi di pilih. Ketika attribute provinsi dipilih, maka attribute kota otomatis akan hanya berisi list kota yang berada pada provinsi tersebut. Code nya seperti beriikut :

public function actionSetKot()
 {
    $data=TabelKota::model()->findAllByAttributes(array('idProv'=>$_POST['haha']));
    $data=CHtml::listData($data,'id','kota');
    foreach($data as $value=>$name)
    {
          echo CHtml::tag('option',
          array('value'=>$value),CHtml::encode($name),true);
    }
 }

Penjelasan : pada code di atas, akan menghasilkan sekumpulan data dari tabel kota yang mana di filter berdasarkan “idProv”(id Provinsi) sesuai dengan request. Setelah itu sekumpulan data itu akan digunakan untuk mengisi option yang ada pada attribute kota.

Nah, setelah membuat action tersebut kita harus memodifikasi code pada form yang bertugas untuk me-request permintaan untuk mengeset attribute kota ketika attribute provinsi telah dipilih.. Berikut code nya :

<div>
  <?php echo $form->labelEx($model,'provinsi'); ?>
  <?php 
     echo $form->dropDownList($model,'provinsi',array(),
         array('empty' => 'choose :',
          'ajax' => array(
             'type'=>'POST',
              url'=>CController::createUrl('namaController/setkot'),
             'data' => "js:{haha:$(this).val()}",
             'update'=>'#Namamodel_kota',
          ))); 
 ?>
 <?php echo $form->error($model,'provinsi'); ?>
</div>
<div>
   <?php echo $form->labelEx($model,'kota'); ?>
   <?php 
         echo $form->dropDownList($model,'kota', array(),
            array('empty' => 'choose :')); 
   ?>
   <?php echo $form->error($model,'kota'); ?>
</div>

Penjelasan : code di atas adalah code pada halaman form. Pada dropdown “provinsi”, terdapat beberapa perintah yang digunakan untuk mengirimkan request jika attribute tersebut telah dipilih oleh user. Disana terlihat request tersebut akan memanggil action “setkot” yang sudah kita buat sebelumnya dimana setelah action tersebut dipilih, maka data akan mengupdate attribute “#Namamodel_kota”. Namamodel_kota merupakan attribute kota, disana terdapat tambahan kata “Namamodel” dikarenakan dia adalah attribute dari suatu model.

Selesai.. Selamat mencoba..

Semoga membantu..😀

21 Responses to [Yii Framework] Dropdownlist yang Terhubung

  1. fachrizal says:

    gan minta solusinya dong ,,, ni pertanyaan ane di yii forum indonesia : tolong di baca n di kasih solusinya ya gan …., mungkin agan bisa …

    ni link postingan ane :

    http://www.yiiframework.com/forum/index.php?/topic/26828-jui-autocomplete/

    mohon gan, bantuaanya …

  2. wah, jujur ane blum pernah nyoba juiautocomplete, tapi coba agan buat format data nya sama kyak tutor di atas gan… kali aja sama..

  3. lutfi says:

    gan mau tanya bagaiamana caranya untuk merubah data multiple dropdownlist secara bersamaan..misal untuk contoh diatas, saya modifikasi spt berikut
    echo $form->dropDownList($model,’provinsi’,array(),
    array(’empty’ => ‘choose :’,
    ‘ajax’ => array(
    ‘type’=>’POST’,
    url’=>array (CController::createUrl(‘namaController/setkot’),CController::createUrl(‘namaController/setarea’)),
    ‘data’ => “js:{haha:$(this).val()}”,
    ‘update’=>array (‘#Namamodel_kota’,’#Namamodel_area’),
    )));
    saya mencoba memanggil dua action untuk merubah dua dropdwon secara bersamaan tapi hasilnya tetap ndak bisa jalan..ada ide??

  4. pertanyaan menarik gan.. saya buat aja postingan terbaru aja ya utk ngejawab pertanyaannya..
    nih saya buat dlu..

  5. Pingback: [Yii Framework] Dropdownlist yang Terhubung Dengan Banyak Dropdownlist Lain « Sabitlabscode

  6. daeng says:

    kalo untuk memfilter clistview dengan menggunakan dropdownlist, caranya gimana gan yang mudah?

  7. saya sendiri belum pernah buat gan, tapi itu ada tutorialnya dimana gitu.. coba agan search aja gan..

  8. $_POST[‘haha’]
    itu buat apa gan?

  9. nangkep nilai yg di POST(submit) yang punya nama haha..

  10. masyar says:

    ko muncul error : include(Propinsi.php): failed to open stream: No such file or directory

    maksudnya apa ya gan..

  11. masyar says:

    trims gans.. solved🙂

  12. agung says:

    gan maaf ni mau nanyqa, kalo terhubungnya di satu tabel yang sama gimanaya..?
    contoh nya saya ada tabel “siswa”, Dropdownlist nya di “id_siswa” stelah di select otomatis textfild nama terisi sesui dengan id nya… ??

  13. seperti biasa aja mas..
    diganti model sistwa aja..

  14. agus says:

    gan, aku aku belajar nih, pas aku implementasikan kok muncul pesan error ‘Unable to resolve the request “namaController/setkot”‘, namacotrollernya udah aku ganti dengan nama controller sesuai dengan yg disini

  15. agetakka says:

    siang mas sabit.
    saya sering mantengin situs ini, banyak membantu dalam pekerjaan saya.
    ooh yah mau sekedar bertanya saja, memang mas sabit sengaja tidak menyertakan screenshoot di setiap tutorialnya??
    yah menurut saya dengan ada SS itu bisa lebih membantu buat yang sedang belajar juga.
    thanks

    • hehe. ngga gan.. cuma emang saya itu nulis mood2 an, jadi kalo pun ga mood dan ada yang mau saya tulis saya nulis nya cepet ga pake screen shot karena makan waktu.

  16. arif says:

    kok punya saya tampilannnya cuma choose : di drop downlistnya ?

  17. faiha says:

    mas sabit. saya udah buat di Yii untuk data Cuti dan ada beberapa form di situ yg nantinya saya isiin data nya. salah satunya form “jenis cuti”. masalahnya saya ingin di form jenis cuti itu pas mau saya isikan datanya, langsung ada pilihan nya kayak kita buat combobox gitu. itu bisa gak nampil di Yii? caranya gimana ya mas? saya belom nemu solusinya nih. mohon bantuannya ya. terimakasih

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: