Semoga ini bisa Membantu… Ane dah Coba dan Berhasil…!
sebelumnya Ane buat method di model Country
public function getCountries()
{
$criteria = new CDbCriteria();
$criteria->condition = "is_active = 1";
$criteria->order = "name ASC";
$countries = $this->findAll($criteria);
return $countries;
}
ini code di view, _form.php
<div class="row">
<?php echo $form->labelEx($model,'country_id'); ?>
<?php echo $form->dropDownList($model,'country_id',CHtml::listData(Countries::model()->getCountries(),'id','name'),
array(
'prompt'=>'Selecione um grupo',
'ajax'=> array(
'type' => 'POST',
// mengirimkan data ke controller Cities/DinamicCities
'url'=>CController::createUrl('cities/dynamicCities'),
'update'=>'#'.CHtml::activeId($model,'region_id'),
)
)
);
?>
<?php echo $form->error($model,'country_id'); ?>
</div>
<div class="row">
<?php echo $form->labelEx($model,'region_id'); ?>
<?php echo $form->dropDownList($model,'region_id',array()); ?>
<?php echo $form->error($model,'region_id'); ?>
</div>
di kode form diatas memanggil method getCountry yang ada di Model Country diatas… Kemudian mengirimkan data ke controller
nah di Controller nya kodenya seperti ini…
public function actionCreate()
{
$model=new Cities;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Cities']))
{
$model->attributes=$_POST['Cities'];
if($model->save())
$this->redirect(array('admin'));
}
$this->render('create',array(
'model'=>$model,
));
}
public function actionDynamicCities()
{
$data=Regions::model()->findAll('country_id=:country_id',
array(':country_id'=>(int) $_POST['Cities']['country_id'])
);
$data=CHtml::listData($data,'id','name');
foreach($data as $value=>$name)
{
echo CHtml::tag('option',array('value'=>$value),CHtml::encode($name),true);
}
}
ini Ane dah Mencoba dan Sukses… Kalo ada yang masih bingung PM Ane Aja…!