Yii二级联动下拉菜单


在做一个小项目,有项目,预算和采购三张表,项目包含多个预算,预算包含采购。 

在创建采购的时候就需要下拉菜单来选择项目和预算了。先选择项目,再更具项目选择预算。 所以需要耳机联动的下拉菜单。 

原来直接用CHtml就可以做出来了,在百度之前我还一直想着自己怎么写。 

看了好多博客,自己总结一下吧。 

视图里面的代码: 

<div class="row">
		<?php echo $form->labelEx($model,'prj_id'); ?>
		<?php 
			$prjs = Project::items();
			echo CHtml::dropDownList('Caigou[prj_id]', '',     //这里是父菜单
					$prjs, //父级数组 array('父级ID1'=>'父级名称1')
					array(
						'name'=>'Caigou[prj_id]',    //名称
						'empty'=>'请选择',      //空时显示
						'ajax'=>array(           //选项切换时进行ajax操作
							'type'=>'post',    // ajax type
							'url'=>Yii::app()->createUrl('yusuan/Childyuan'), //路径
							'update'=>'#Caigou_yusuan_id',   //更新的ID,这里貌似要注意一下
							'data'=>array('pid'=>'js:this.value')   //获取本身的值,作为Post数据
						)
					)
				);
		?>
		<?php echo $form->error($model,'prj_id'); ?>
	</div>

	<div class="row">
		<?php echo $form->labelEx($model,'yusuan_id'); ?>
		<?php echo CHtml::dropDownList('Caigou[yusuan_id]', '', array(), array('name'=>'', 'empty'=>'----------'));?>    //这里是子菜单
		<?php echo $form->error($model,'yusuan_id'); ?>
	</div>
控制器里面的代码:也就是Post的Childyuan方法 

	public function actionChildyuan(){
		$items = Yusuan::model()->findAll(array(
             'condition' =>'prj_id=:pid',
             'params' =>array( ':pid' =>(int)$_POST['pid']) ,
        ));
		$items = CHtml::listData($items,'id','name');
		foreach($items as $k=>$v){
			echo CHtml::tag('option', array('value'=>$k), CHtml::encode($v), true);   //这里要小心
		}
	}





没有更多推荐了,返回首页