0

I have a dropdown that I want to populate when an item in another dropdown is selected. 两个下拉列表都与从控制器传递的数据/模型相关联。第一个下拉列表是通过调用模型中的函数从数据库中填充的。这是表格,

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 调用的操作 user/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 正确填充下拉列表并正确绑定到模型的语法一无所知。

4

1 回答 1

3

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

更改您的代码,例如

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

MyModelName您使用的模型在哪里)

或者喜欢

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

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

于 2013-09-21T20:47:37.340 回答