Как создать зависимый выпадающий список в YII? Чего не хватает в контроллере?

Как получить область DropDown / Select-Option, изменив опцию City?

Найти все области списка по первому ключу таблицы города.

Состояние City (id) -> area (city_id), тогда я показываю это.

Теперь это только шоу Ноль когда я изменю город вариант.

Посмотреть:

<div class="row">
<?php echo $form->labelEx($model,'city'); ?>
<?php echo $form->dropDownList($model,'city', CHtml::listData(City::model()->findAll(), 'id', 'city'),
array(
'prompt'=>'select',
'ajax' => array(
'type' => 'POST', //My method type
'dataType' => 'JSON',
'url' => CController::createUrl('users/dynamiccities'), //This is my request/ajax URL
'data'=>array(
'city'=>'js:this.value',
),
'success'=>'js:function(data){
$("#Users_area").html(data.areaList);
}' //The functionaliy after success
)
));
?>
<?php echo $form->error($model,'city'); ?>
</div>

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

контроллер:

public function actionDynamiccities(){
$cityId = $_POST['city'];
$areaList = '';

if ($cityId != '') {
$areaList = CHtml::tag('option', array('value' => ''), CHtml::encode("NULL"), true);
} else {
$condition="city_id=".cityId;
$data = Area::model()->findAll(array('condition'=>$condition), 'id');
if($data){
$areaList = CHtml::tag('option', array('value' => ""), "Select", true);
foreach ($data as $d) {
$areaList .= CHtml::tag('option', array('value' => $d->id), CHtml::encode($d->area), true);
}
}else {
$areaList = CHtml::tag('option', array('value' => ''), CHtml::encode("NULL"), true);
}
}
echo CJSON::encode(array(
'areaList' => $areaList,
));
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector