[Ask] Dependant dropdownlist

Maaf gan ane mau tanya sedikit,

ane mau buat dependant list,udah jlan dpendantnya(kalau milih A langsung keluar B,C,D)

tapi pas ane mau create,


Please fix the following input errors:

Kabupaten cannot be blank.

Provinsi cannot be blank.

berarti kan pas di create belum nangkep id nya kabupaten dan provinsi ya gan?

penampakan di _form.php




<div class="row">

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

		<?php

		echo CHtml::dropdownList('wilayah','', Chtml::listData(Provinsi::model()->findAll(), 'id', 'provinsi_name'),

			array(

			    'prompt' => 'Pilih Propinsi', //


			    'value' => '0',

			    'ajax' => array(

				'type' => 'POST', //request type


				'url' => CController::createUrl('kabupaten/filterKab'), // panggi filter kabupaten di controller


				'update' => '#kabupaten_id', //selector to update


				'data' => array('wilayah' => 'js:this.value'),))); ?>

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

	</div>

	<div class="row">

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

		<?php echo CHtml::dropDownList('kabupaten_id','', array(),array( 'prompt'=>'Pilih provinsi dahulu.','value'=>'0'));?>


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

	</div>

penampakan di controller:


public function actionFilterKab()

    {

       $data=Kabupaten::model()->findAll('provinsi_id=:parent_id',

                     array(':parent_id'=>(int) $_POST['wilayah']));

		    

           $data=CHtml::listData($data,'id','kabupaten_name');


           foreach($data as $value=>$name)

           {

            echo CHtml::tag('option',array('value'=>$value),CHtml::encode($name),true);

           }

    }

penampakan di model




public function rules() {

		// NOTE: you should only define rules for those attributes that

		// will receive user inputs.

		return array(

		    array('username, nama_asli, kabupaten_id, provinsi_id, jenis_user_id', 'required'),

		    array('kabupaten_id, provinsi_id, jenis_user_id', 'numerical', 'integerOnly' => true),

		    array('username, password, nama_asli', 'length', 'max' => 45),

		    array('username', 'unique', 'message' => 'username has been registered'),

		    array('new_password, confirm_password', 'required', 'on' => 'insert'),

		    array('current_password, new_password, confirm_password', 'length', 'max' => 32),

		    array('confirm_password', 'compare', 'compareAttribute' => 'new_password'),

		    // The following rule is used by search().

		    // Please remove those attributes that should not be searched.

		    array('id, username, password, nama_asli, kabupaten_id, provinsi_id, jenis_user_id', 'safe', 'on' => 'search'),

		);

	}


	/**

	 * @return array relational rules.

	 */

	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(

		    'provinsi'=>array(self::BELONGS_TO,'Provinsi','provinsi_id'),

		    'kabupaten'=>array(self::BELONGS_TO,'Kabupaten','kabupaten_id'),

		    'jenisuser'=>array(self::BELONGS_TO,'JenisUser','jenis_user_id')

		);

	}


	/**

	 * @return array customized attribute labels (name=>label)

	 */

	public function attributeLabels() {

		return array(

		    'username' => 'Username',

		    'password' => 'Password',

		    'nama_asli' => 'Nama Asli',

		    'kabupaten_id' => 'Kabupaten',

		    'provinsi_id' => 'Provinsi',

		    'jenis_user_id' => 'Jenis User',

		);

	}



kira-kira ane salah dimana ya?

kenapa pake




 echo CHtml::dropdownList('wilayah','', Chtml::listData(Provinsi::model()->findAll(), 'id', 'provinsi_name')



kalau seperti ini pas model->save() entr provinsi ma kabupatenya ga ke save…soalnya nilai provinsi ga di masukin ke model…

harusnya





<?php echo $form->dropDownList($model,'provinsi_id',CHtml::listData(Provinsi::model()->findAll(), 'id', 'provinsi_name')

ajax n teman2nya); ?>

		




semoga membantu :lol:

sudah dicoba tapi muncul


error Object of class User could not be converted to string

itu aq buat kyak gtu hasil liat di

http://www.yiiframework.com/wiki/24/creating-a-dependent-dropdown/

kalau ga pas di controller createnya tambahin




$model->attributes=$_POST['MODELNYA'];

$model->provinsi_id = $_POST['wilayah']

$model->kabupaten_id = $_POST['kabupaten_id']

-----

if($model->save())

------



pake code anda yang pertama y…

moga2 berhasil :lol:

yang awal saya sih lebih curiga kamu menggunakan dropdownlist seperti yang disebut agan Mr.D

kurang lebih perbaikan di _form seperti di bawah ini. Maaf ane terpaksa gak ditaruh dalam tag code, soalnya jadi gak bisa bold codenya~

<div class="row">

	&lt;?php echo &#036;form-&gt;labelEx(&#036;model, 'provinsi_id'); ?&gt;


	&lt;?php


	echo [b]&#036;form-&gt;dropdownList[/b](&#036;model, '[b]provinsi_id[/b]', Chtml::listData(Provinsi::model()-&gt;findAll(), 'id', 'provinsi_name'),


		array(


		    'prompt' =&gt; 'Pilih Propinsi', //





		    'value' =&gt; '0',


		    'ajax' =&gt; array(


			'type' =&gt; 'POST', //request type





			'url' =&gt; CController::createUrl('kabupaten/filterKab'), // panggi filter kabupaten di controller





			'update' =&gt; '#[b]NamaModel_[/b]kabupaten_id', //selector to update





			'data' =&gt; array('wilayah' =&gt; 'js:this.value'),))); ?&gt;


	&lt;?php echo &#036;form-&gt;error(&#036;model, 'provinsi_id'); ?&gt;


&lt;/div&gt;


&lt;div class=&quot;row&quot;&gt;


	&lt;?php echo &#036;form-&gt;labelEx(&#036;model, 'kabupaten_id'); ?&gt;


	&lt;?php echo [b]&#036;form-&gt;dropDownList[/b]([b]&#036;model[/b],'kabupaten_id', array(),array( 'prompt'=&gt;'Pilih provinsi dahulu.','value'=&gt;'0'));?&gt;





	&lt;?php echo &#036;form-&gt;error(&#036;model, 'kabupaten_id'); ?&gt;


&lt;/div&gt;

muncul error yang agan bilang itu pas kapan?

thanks for all,now it’s solved :D

Sama thank gan ane juga sedang cari yang ginian heheh :D

gan ane coba kok g ada dropdownnya ?

perubahan codingnya sbgberikut

view:


<div class="row">

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

		<?php echo $form->dropDownList($model,'businesscountry',

							CHtml::listData(TbCountry::model()->findAll(),'countryid','country'),

							array(

								'prompt'=>'select country',

								'value'=>'0',

								'ajax'=>array(

									'type'=>'POST',

									'url'=>CController::createUrl('contact/liststate'),

									'update'=>'#otherstate',

									'data'=>array('countryid'=>'js:this.value'),

									))); ?>

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

	</div>


	<div class="row">

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

		<?php echo $form->dropDownList($model,'otherstate',

							array(),

							array(

								'prompt'=>'select state',

								'ajax'=>array(

									'type'=>'POST',

									'url'=>CController::createUrl('contact/listcity'),

									'update'=>'#othercity',

									'data'=>array('stateid'=>'js:this.value'),

									))); ?>

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

	</div>


	<div class="row">

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

		<?php echo $form->dropDownList($model,'othercity',array(),array('prompt'=>'select city')); ?>

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

	</div>

controler:




public function actionListstate()

	{

		$model=TbState::model()->findAll('countryid=:countryid',

				array(':countryid'=>(int)$_POST['countryid']));

		$model=CHtml::listData($model,'stateid','state');

		foreach($model as $value=>$name)

		{

			echo CHtml::tag('option',array('value'=>$value),CHtml::encode($name),true);

		}

	}

	

	/*

	 * get list city by stateid

	 */

	

	public function actionListcity()

	{

		$model=TbCity::model()->findAll('stateid=:stateid',

				array(':stateid'=>(int)$_POST['stateid']));

		$model=CHtml::listData($model,'cityid','city');

		foreach($model as $value=>$name)

		{

			echo CHtml::tag('option',array('value'=>$value),CHtml::encode($name),true);

		}

	}

tolooooonggg???

‘update’=>’#MODEL_othercity’,

kayanya kurang gt d gan

usah barusan tapi sama saja… :( :( :( :(

ga ada dropdownya mksdnya gmn y??

da di ksh hak akses yang action di controllerny??

sudah tak kasih hak akses.

masalah saya begini ketika countrynya saya rubah di statenya tidak ada perubahan. padahal semestinya country > state > city

bentar. ada hubungannya gak sama relation ??

ga ada si harusnya…saya bikin biasanya ga ngaruh ma relationya…

hasil balikan dari controller bener ga gan??

bisa gan akhirnya… tapi ada masalah lagi…

ketika countrynya dirubah statenya berubah tapi citynya tidak berubah…

ditambah jika di rubah langsung ada isinya. yang saya inginkan ketika datanya dirubah semua yang dibawahnya kembali kosong.

kalau mau set supaya kosong lagi ya berarti pas country berubah state di isi dan city di set kosong…update 2 dropdown langsung…saya si bikinya begitu di form saya…hehehe

dimana yang double updatenya ? countrynya ? caranya bagaimana ?

y di countrynya…caranya pake json…

http://www.yiiframework.com/wiki/164/updating-fields-on-a-form-with-ajax-and-json/

baca disana aja…lengkap tuh

dengan otak atik akhirnya bisa gan. tapi gak pakai yang seperti di link yang terlampir, karenya mbulet/susah, dari mikir ke mikir akhirnya keluar ide.

berikut kode viewnya




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

			<?php echo $form->dropDownList($model,'businesscountry',

							CHtml::listData(TbCountry::model()->findAll(),'countryid','country'),

							array(

								'onchange'=>'$("#TbContact_businesscity").html("<option value=0>select city</option>");

											$("#TbContact_businessstate").html("<option value=0>select state</option>");',

								'prompt'=>'select country',

								'value'=>'0',

								'ajax'=>array(

									'type'=>'POST',

									'url'=>CController::createUrl('contact/liststate'),

									'update'=>'#TbContact_businessstate',

									'data'=>array('countryid'=>'js:this.value'),

									))); ?>

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

			

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

			<?php echo $form->dropDownList($model,'businessstate',

							array(),

							array(

								'prompt'=>'select state',

								'value'=>'0',

								'ajax'=>array(

									'type'=>'POST',

									'url'=>CController::createUrl('contact/listcity'),

									'update'=>'#TbContact_businesscity',

									'data'=>array('stateid'=>'js:this.value'),

									))); ?>

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

	

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

			<?php echo $form->dropDownList($model,'businesscity',array(),array('prompt'=>'select city','value'=>'0')); ?>

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

Nice Gan


$form->dropDownList($model,'businesscountry',

                                                        CHtml::listData(TbCountry::model()->findAll(),'countryid','country'),

                                                        array(

                                                                'onchange'=>'$("#TbContact_businesscity").html("<option value=0>select city</option>");

                                                                                        $("#TbContact_businessstate").html("<option value=0>select state</option>");',

                                                                'prompt'=>'select country',

                                                                'value'=>'0',

                                                                'ajax'=>array(

                                                                        'type'=>'POST',

                                                                        'url'=>CController::createUrl('contact/liststate'),

                                                                        'update'=>'#TbContact_businessstate',

                                                                        'data'=>array('countryid'=>'js:this.value'),

                                                                        )));

hehehehe :D thank gan