Yii依赖dropDownMenu与变量更新目标

时间:2014-01-09 08:27:47

标签: php ajax yii

我正在使用标准的Yii依赖dropDownMenu(类似于this)。逻辑是当前dropDown将定义将使用控制器操作更新哪个元素(next dropDown)。

echo CHtml::dropDownList('level_1', '', $arrayWithValues, aaray(
  'ajax'=>array(
    'type'=>'POST',
    'url'=>Ccontroller::createUrl('myActionName'),
    'update'=>'#level_2'
)));

我的问题是如何在执行操作后更改更新值?即行动发现我们需要填充DropDown Level_3而不是Level_2

1 个答案:

答案 0 :(得分:1)

echo CHtml::dropDownList('level_1', '', $arrayWithValues, aaray(
  'ajax'=>array(
    'type'=>'POST',
    'dataType' => 'json',
    'data'=>array('selected'=>'js:this.value'),,
    'url'=>Ccontroller::createUrl('myActionName'),
    'success'=>'js:function(data){
       if (data.update==2){
          $("#level_2").empty(); 
          $("#level_2").append(data.items);
       }
       if (data.update==3){
          $("#level_3").empty(); 
          $("#level_3").append(data.items);
       }
    }'
)));

在您的控制器中,您将选择值为$ _POST ['selected']。

public function actionmyaActionName()
{
    ....
    do what you need here
    $items.=CHtml::tag('option', array('value'=>$value),CHtml::encode($state),true);

    ....
    echo CJSON::encode(array(
    'update'=>$update,
    'items'=>$items
    ));
    Yii::app()->end();
}

形成您的选项,定义要更新的内容。