Yii 在选择另一个时填充一个下拉列表



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

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 调用的动作用户/获取单位。

$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::d ropDownList。这是因为我对如何准确确保下拉列表使用 ajax 正确填充并正确绑定到模型的语法一无所知。

你使用$form->dropDownListRow这就是为什么你会在服务器端得到$_POST['MyModelName']['superunit']

像这样更改代码

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

其中MyModelName是您使用的模型)

或喜欢

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

对于其他人 - 这个维基可能会有所帮助。

相关内容

最新更新