我有4个下拉列表,1个下拉列表作为主控制3下拉列表其他,这是我的主下拉列表的示例代码。
<div class="row">
<?php echo $form->labelEx($truck,'Truck'); ?>
<?php echo CHtml::dropDownList('idt',$truck->idt,CHtml::listData(Truck::model()->findAll(),'idt','number'),
array(
'value'=>'1',
'ajax' => array(
'type'=>'POST',
'url'=>CController::createUrl('FindTruck'),
'data'=>array('idt'=>'js:this.value'),
'dataType'=>'html',
))); ?>
</div>
<div class="row">
<?php echo $form->labelEx($employee,'Driver'); ?>
<?php echo CHtml::dropDownList('driver','$variable',CHtml::listData(Employe::model()->findAll(),'ide','name')); ?>
</div>
这是我的js setDriver
function setDriver(name,value){
document.getElementById(name).value = value
}
这是我的控制器
public function actionFindTruck() {
echo "<script>setDriver('driver',3);</script>"; // test satatic data
}
问题是我必须在控制器(ActionFindTruck)上编写哪些代码来更改上面$ variable的值,所以如果我更换Truck,则会更改选择的驱动程序。
谢谢你的帮助。
答案 0 :(得分:1)
这就是我这样做的方式,您应该能够将值更改为您的环境:
public function actionUpdateDropdown()
{
// ajax function to retrieve categories by country:
$lang_id = (!empty($_POST['feature']['language_id'])) ? $_POST['feature']['language_id'] : DEFAULT_LANG_ID;
$data = category::model()->findAll('language_id=:parent_id',
array(':parent_id'=>(int) $lang_id));
$data = CHtml::listData($data,'id','name');
if (!empty($data)) { echo '<option value="">Select Category...</option>'; }
foreach($data as $value=>$name) {
echo CHtml::tag('option',
array('value'=>$value),CHtml::encode($name),true);
}
}
答案 1 :(得分:1)
关于在此URL创建依赖下拉列表的讨论非常好: