DWZ+PHP中如何实现下拉框的二级联动效果?

OpenIoT 发布于 2013/03/11 15:43
阅读 2K+
收藏 1

【Gopher China万字分享】华为云的Go语言云原生实战经验!>>>

hi,各位好!

    我在使用EaglePHP+DWZ进行二次开发的过程中,遇到了一个大问题(对于我这个php初学者来说):那就是如何实现下拉框的二级联动效果?

    看过DWZ官方例子中的下拉框二级联动效果,也在网上找到段ThinkPHP+DWZ的二级联动例子,但依葫芦画瓢实现了下列代码,可是就是不能看到实际效果(主要体现为:点击下拉框后,其它下拉框没反映,我的判断是refUrl中属性没被执行)。

     请各位走过、路过,帮忙看一看,指点一二,多谢了!

     相关代码如下:

Controller部分,CommonController是EaglePHP框架提供的接口

<?php

class MyTestController extends CommonController {     

	public function indexAction(){
		$this->display();
	} 
       
    public function returnCityAction(){  
        $cityId = $_REQUEST['cityId'];  
        if($cityId=='sh'){  
            $arrCity = array(array('all','所有城市'),array('sh','上海市'));  
        }else if($cityId=='bj'){  
            $arrCity = array(array('all','所有城市'),array('bj','北京市'));  
        }else{  
            $arrCity = array(array('all','所有城市'));  
        }  
         echo json_encode($arrCity);  
    }  
      
    public function returnAreaAction(){  
        $areaId = $_REQUEST['areaId'];  
        if($areaId=='sh'){  
            $arrArea = array(array('1','上海城市1'),array('2','上海城市2'));  
        }else if($areaId=='bj'){  
            $arrArea = array(array('3','北京城市3'),array('bj','北京城市4'));  
        }else{  
            $arrArea = array(array('all','所有城市'));  
        }  
          
         echo json_encode($arrArea);  
    } 

    public function testAction(){
    	$arrArea = array(array('1','上海城市1'),array('2','上海城市2'));  
    	echo json_encode($arrArea);
    }      
}  

?>
View部分

<h2 class="contentTitle">下拉菜单</h2>  
  
<div class="pageContent" layoutH="56">  
    <select class="combox" name="province" ref="w_combox_city" 
        refUrl="{{$smarty.const.__URL__}}returnCity/cityId/{value}">  
        <option value="all">所有省市</option>  
        <option value="bj">北京</option>  
        <option value="sh">上海</option>  
    </select>  

    <select class="combox" name="city" id="w_combox_city" ref="w_combox_area" 
        refUrl="{{$smarty.const.__URL__}}returnArea/areaId/{value}">  
        <option value="all">所有城市</option>  
    </select>  

    <select class="combox" name="area" id="w_combox_area">  
        <option value="all">所有区县</option>  
    </select>  
   
    <a href="{{$smarty.const.__URL__}}test">click me</a>
</div>


加载中
0
maoxiaojian
maoxiaojian
select联动效果:

模版代码:

<dl>
             <dt>品牌:</dt>
             <dd>
             <select class="combox required" name="pinpai_id" ref="jixing_id" refUrl="{{$smarty.const.__ROOT__?c=jixing&a=getJixing&pinpai={value}|url}}">
<option value="">所有品牌</option>
{{html_options options=$pinpaiArr selected=$info.pinpai_id}}
</select>
             </dd>
            </dl>
            <dl>
             <dt>机型:</dt>
             <dd>
             <select class="combox required" name="jixing_id" id="jixing_id">
<option value="">所有机型</option>
{{html_options options=$jixingArr selected=$info.jixing_id}}
</select>
             </dd>
            </dl>
服务器端返回代码:

public function getJixingAction()
{
    $pinpai = (int)$this->request('pinpai');
    $list = $this->cur_model->where('pinpai_id='.$pinpai)->order('id ASC')->select();
    $text = '[["", "所有机型"]';
    foreach ($list as $v)
    {
        $text .= ',["'.$v['id'].'", "'.$v['name'].'"]';
    }
    $text .= ']';
    exit($text);
}
返回顶部
顶部