我正在使用标准的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
。
答案 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();
}
形成您的选项,定义要更新的内容。