Drop down menu yii设置从其他dropdownlist中选择的dropdownlist

Drop down menu yii设置从其他dropdownlist中选择的dropdownlist,drop-down-menu,yii,Drop Down Menu,Yii,我有4个dropdownlist,1个dropdownlist作为主控来控制3个dropdownlist,这是我的主控dropdownlist示例代码 <div class="row"> <?php echo $form->labelEx($truck,'Truck'); ?> <?php echo CHtml::dropDownList('idt',$truck->idt,CHtml::listData(Truck::m

我有4个dropdownlist,1个dropdownlist作为主控来控制3个dropdownlist,这是我的主控dropdownlist示例代码

<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>
这是我的控制器

public function actionFindTruck() {
   echo "<script>setDriver('driver',3);</script>"; // test satatic data
}
公共函数actionFindTruck(){
echo“setDriver('driver',3);”;//测试数据
}
问题是我必须在控制器(ActionFindTruck)上写什么代码才能更改上面$variable的值,因此如果我更改卡车,驾驶员将被更改为选中。

谢谢您的帮助。

我就是这样做的,您应该能够根据您的环境更改值:

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);
    }
}
公共函数actionUpdateDropdown()
{   
//用于按国家检索类别的ajax函数:
$lang\u id=(!empty($\u POST['feature']['language\u id'])?$\u POST['feature']['language\u id']:默认语言id;
$data=category::model()->findAll('language\u id=:parent\u id',
数组(':parent_id'=>(int)$lang_id));
$data=CHtml::listData($data,'id','name');
如果(!empty($data)){echo'选择类别…';}
foreach($value=>$name形式的数据){
echo CHtml::标记('选项',
数组('value'=>$value),CHtml::encode($name),true);
}
}

关于在这个URL上创建相关下拉列表,有一个很好的讨论:


感谢lgd,这只是从所选语言显示类别的下拉列表,未选择类别,并在类别下拉列表上显示新内容?在我的代码中,内容不会更改,也不会重新加载,如果卡车已选择,则仅选择一名驾驶员,因此控制器仅从默认情况下的IDTruck中获取IDDriver。您对此有何想法?在这种情况下,您可以简单地传回一些javascript,并将jquery/ajax数据类型属性指定为“html”或“脚本”。您可以返回完整函数或函数调用,因此控制器返回代码如下:
echo'syncDriver('.$truck_id');'从控制器函数中获取$truck\u id,“syncDriver”是一个预加载的javascript函数。你可以抽象一个函数来更新各种下拉列表。嗨,lgd,我是一个新手:),你能写简单的代码吗,比如如果在卡车上我选择idt=2,控制器我用idt=2查询司机,那么ex iddriver=5,所以DROPDOLLIST at driver将选择值=5。非常感谢您的帮助。嗨,lgd,我已经成功地尝试使用javascipt,但是当我使用echo“setDriver('driver',3);”从控制器解析时;此代码在
'ajax'=>数组()中不工作
添加
'dataType'=>'html'
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);
    }
}