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);   //這裏要小心
		}
	}





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章