在做一个小项目,有项目,预算和采购三张表,项目包含多个预算,预算包含采购。
在创建采购的时候就需要下拉菜单来选择项目和预算了。先选择项目,再更具项目选择预算。 所以需要耳机联动的下拉菜单。
原来直接用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); //这里要小心
}
}
本文介绍了在Yii框架中如何实现二级联动下拉菜单的功能。在项目、预算和采购的关系背景下,创建采购时需根据项目选择预算,通过视图代码实现这一交互。文章总结了实现此功能的方法。

458

被折叠的 条评论
为什么被折叠?



