yii实现级联下拉菜单的方法
本文详细讲述了yii实现级联下拉菜单的方法,具体步骤如下:
1.模版中加入如下代码:
<?php echo$form->dropDownList($model,'src_type_id',OrderSrc::options(),array( <spanstyle="white-space:pre"></span>'id'=>'task-order-src-id', )); echo$form->dropDownList($model,'src_shop_id',array(''=>'全部'),array( <spanstyle="white-space:pre"></span>'id'=>'task-shop-id', )) ?>
在这段代码中,OrderSrc_options()这个是先读取一个下拉菜单。调用OrderScrmodel中的options方法。内容如下
publicstaticfunctionoptions($hasShop=true){ $model=newself(); if($hasShop)$model->hasShop(); $models=$model->findAll(); $array=array(''=>'全部'); foreach($modelsas$model){ $array[$model->src_id]=$model->src_name; } return$array; }
2.然后在模版页面中增加JS代码,实现当第一个下拉菜单变化时给第二个下拉菜单进行内容赋值。
<scripttype='text/javascript'> $().ready(function(e){ $('#task-order-src-id').change(function(e){ refreshShops(); }); refreshShops(); functionrefreshShops(){ $.get('<?phpecho$this->createUrl('getShops')?>',{ 'srcId':$('#task-order-src-id').val() },function(html_content){ $('#task-shop-id') .html(html_content) .find('option[value=<?phpecho$model->src_shop_id?>]') .attr('selected','selected'); }); } }); </script>
在这段JS代码中,实现调取一个程序获取第二个下拉菜单的值(调用Controller中的actionGetShops方法),任何追加到第二个下拉菜单中。
Controller中的actionGetShops方法如下:
publicfunctionactionGetShops(){ $srcId=$_GET['srcId']; $array=ThirdpartInterfaceConfig::options($srcId); $htmlContent="<optionvalue=''>全部</options>"; foreach($arrayas$k=>$v){ $htmlContent.="<optionvalue='{$k}'>{$v}</option>"; } echo$htmlContent; }