Yii填写另一个选择的下拉列表

时间:2013-09-21 20:38:49

标签: yii yii-cmodel yii-booster yii-cformmodel

我有一个下拉列表,我想在选择另一个下拉列表中的项目时填充该下拉列表。下拉列表都与从控制器传递的数据/模型相关联。并通过调用模型中的函数从DB填充第一个下拉列表。继承人'表格,

echo $form->dropDownListRow($modelunit, 
        'superunit',
        $model->getSunits(), 
        array(
        'ajax' => array(
        'type'=>'POST',
        'url'=>CController::createUrl('user/getunits'),
        'update'=>'#unit_id',
        ))); 

echo CHtml::dropDownList('unit_id','', array());

这里是Ajax调用的action / getunits动作。

$data=Unit::model()->findAll('sid=:sid', 
                  array(':sid'=>(int) $_POST['superunit']));

    $data=CHtml::listData($data,'id','name');
    foreach($data as $value=>$name)
    {
        echo CHtml::tag('option',
                   array('value'=>$value),CHtml::encode($name),true);
    }

我一直收到错误"未定义索引:超级单元"选择第一个下拉列表时此外,您可能会注意到我使用form-> dropDownListRow作为第一个下拉列表,而第二个使用CHtml :: dropDownList。这是因为我对如何确保使用ajax正确填充下拉列表并且还正确绑定到模型的语法无能为力。

1 个答案:

答案 0 :(得分:3)

您使用$form->dropDownListRow这就是您在服务器端获得$_POST['MyModelName']['superunit']的原因

更改您的代码,如

$data=Unit::model()->findAll('sid=:sid', 
                      array(':sid'=>(int) $_POST['MyModelName']['superunit']));

MyModelName是您使用的模型的地方)

或者喜欢

echo CHtml::dropDownList('superunit'.....

对于其他人 - this wiki可能有帮助。