Yii Framework Forum: Mohon Bantuan Dropdown List Bertingkat - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Mohon Bantuan Dropdown List Bertingkat mohon bantuan untuk mencari apa yang salah dalam kode saya Rate Topic: ***** 1 Votes

#1 User is offline   Teguh Yudha Gumelar 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 24-June 13
  • Location:Indonesian

Posted 25 June 2013 - 09:21 PM

para master mohon bantuannya
sudah googling dan belum menemukan pencerahan, semoga para master berkenan memberikan jawaban yang sudah dua hari saya cari :)


saya membuat dropdownlist dengan mengambil data dr tabel country dan state untuk diambil id nya untuk disimpan di tabel blogger
pada tabel country ada id, country_name
pada tabel state ada idstate, state_name, idcountry
id pada country dan idstate pada state lah yang hendak saya save ke tabel bloger

kendala nya adalah dropdown list state tidak memunculkan nilai

untuk BloggerControllernya
public function actionsetState()
	{
		$data=State::model()->findAll('provinsi_id=:parent_id',array(':parent_id'=>(int) $_POST['wilayah']));
		$data=CHtml::listData($data,'idstate','state_name');
		
		foreach($data as $value=>$name)
		{
			echo CHtml::tag('option',array('value'=>$value),CHtml::encode($name),true);
		}
	}

untuk _form nya
<div class=”row”>
	
	<?php echo $form->labelEx($model,'idcountry'); ?>
	
	<?php
	
	echo $form->dropDownList($model,'idcountry',CHtml::listData(country::model()->findAll(), 'id', 'country_name'),
		array(
		'prompt'=>'0',
		'value'=>'0',
		'ajax'=> array(
						'type'=>'POST',//request type
						'url'=>CController::createUrl('BloggerController/setState'),//memanggil setState pada BloggerController
						'update'=>'#Blogger',//pilih yang akan diupdate
						'data'=>array('wilayah'=>'js:this.value'),)));?>
						
	<?php echo $form->error($model,'idcountry'); ?>	


	</div>
	
	

	
	<div class=”row”>

	<?php echo $form->labelEx($model,'idstate'); ?>

	<?php echo $form->dropDownList($model,'idstate', array(),array( 'prompt'=>'Pilih Country dahulu.','value'=>'0'));?>

	<?php echo $form->error($model,'idstate'); ?>

	</div>

dan pada model Blogger nya
	public function relations()
	{
		// NOTE: you may need to adjust the relation name and the related
		// class name for the relations automatically generated below.
		return array(
			'blogs' => array(self::HAS_MANY, 'Blog', 'idblogger'),
			'idcountry0' => array(self::BELONGS_TO, 'Country', 'idcountry'),
			'idstate'=>array(self::BELONGS_TO,'state_name','idstate')
		);
	}


mohon untuk para master memberi pencerahannya, apa yang salah dengan code saya :)
0

#2 User is offline   daudtm 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 85
  • Joined: 25-April 13
  • Location:Malang

Posted 27 June 2013 - 08:40 AM

View PostTeguh Yudha Gumelar, on 25 June 2013 - 09:21 PM, said:

para master mohon bantuannya
sudah googling dan belum menemukan pencerahan, semoga para master berkenan memberikan jawaban yang sudah dua hari saya cari :)

..snip..


coba pasang firebug, atau pake chrome dev-tools, lalu inspeksi, waktu idcountry-nya diganti Ajax Request ke setStatenya udah jalan belum? kalo sudah request coba cek parameternya yg dilempar udah bener gak (wilayah = xx).

kalo saya pribadi gak seberapa suka pake dependent dropdownlist model begitu, kurang user friendly.
Mending pake 1 autocomplete untuk kota, begitu suggestion dipilih user, otomatis propinsi ngikutin.
0

#3 User is offline   Teguh Yudha Gumelar 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 24-June 13
  • Location:Indonesian

Posted 30 June 2013 - 11:07 PM

View Postdaudtm, on 27 June 2013 - 08:40 AM, said:

coba pasang firebug, atau pake chrome dev-tools, lalu inspeksi, waktu idcountry-nya diganti Ajax Request ke setStatenya udah jalan belum? kalo sudah request coba cek parameternya yg dilempar udah bener gak (wilayah = xx).

kalo saya pribadi gak seberapa suka pake dependent dropdownlist model begitu, kurang user friendly.
Mending pake 1 autocomplete untuk kota, begitu suggestion dipilih user, otomatis propinsi ngikutin.

0

#4 User is offline   Teguh Yudha Gumelar 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 8
  • Joined: 24-June 13
  • Location:Indonesian

Posted 30 June 2013 - 11:08 PM

kalo yang seperti itu kaya gimana gan
alhamdulilah udah selesai yang ini
0

#5 User is offline   daudtm 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 85
  • Joined: 25-April 13
  • Location:Malang

Posted 01 July 2013 - 09:29 PM

View PostTeguh Yudha Gumelar, on 30 June 2013 - 11:08 PM, said:

kalo yang seperti itu kaya gimana gan
alhamdulilah udah selesai yang ini


Pake cjuiautocomplete, arahkan request untuk suggestionnya ke controller tertentu, misalnya lookup/kota
kembalian dari lookup/kota harus membawa nama kota, propinsi dan id-nya masing2,
contoh:
Attached File  search_kota1.png (13.19K)
Number of downloads: 22
Attached File  search_kota2.png (6.39K)
Number of downloads: 18

saat kota dipilih, combo box propinsi langsung di assign sesuai id_propinsi, ini contoh kodingan saya (saya gak pake id kota dan propinsi, silahkan nyesuaikan):
view
..snip..
	<?php echo $form->textFieldRow($model,'kecamatan',array('class'=>'span5','maxlength'=>255)); ?>

	<?php echo $form->labelEx($model, 'kabkota'); ?>
	<div class="input-append">
	<?php $this->widget('bootstrap.widgets.TbTypeahead', array(
		'model'=>$model,
		'attribute'=>'kabkota',
		'htmlOptions'=>array('class'=>'span5', 'autocomplete'=>'off'),
		'options'=>array(
			'items'=>4,
			'source'=>sprintf('js:function(query, process) {
				$.get("%s", {key: query}, function(data) {
					data = JSON.parse(data);
					found = [];
					$.each(data, function(i, line) {
						found.push(line.key);
						foundList[line.key] = line;
					});
					return process(found);
				});
			}', Yii::app()->createUrl('lookup/kota')),
			'updater'=>'js:function(item) {
				$("#Sekolah_propinsi").val(typeof foundList[item].propinsi == "undefined" ? null : foundList[item].propinsi);
				return foundList[item].nama;
			}',
		),
	)); ?>
		<span class="add-on"><a href="#" id="search-button"><i class="icon-search"></i></a></span>
	</div>	

	<?php echo $form->dropDownListRow($model,'propinsi', $list_propinsi, array('class'=>'span3')); ?>
..snip..
<?php
Yii::app()->clientScript->registerScript('form-sekolah.js', '
	var foundList = [];
	
	$("#search-button").click(function(ev) {
		ev.preventDefault();

		$("#Sekolah_kabkota").focus();
	});	
');



LookupController
..snip..
	public function actionKota($key)
	{
		$listKota = Kabkota::model()->findAll(array(
			'condition'=>"LOWER(nama) LIKE LOWER('%{$key}%')",
			'limit'=>10,
		));

		$result = array();
		if (! empty($listKota))
			foreach ($listKota as $kota) {
				array_push($result, array(
					'key'=>sprintf('%s, %s', $kota->nama, $kota->propinsi->nama),
					'nama'=>$kota->nama,
					'propinsi'=>$kota->propinsi->nama,
				));
			}
		echo CJSON::encode($result);
	}
..snip..

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users