1.模版中加入如下代码:
1
2
3
4
5
6
7
8
|
<?php
echo $form ->dropDownList( $model , 'src_type_id' , OrderSrc::options(), array (
<span style= "white-space:pre" > </span> 'id' => 'task-order-src-id' ,
));
echo $form ->dropDownList( $model , 'src_shop_id' , array ( '' => '全部' ), array (
<span style= "white-space:pre" > </span> 'id' => 'task-shop-id' ,
))
?>
|
在这段代码中,OrderSrc_options() 这个是先读取一个下拉菜单。调用OrderScr model中的options方法。内容如下
1
2
3
4
5
6
7
8
9
10
|
public static function options( $hasShop = true) {
$model = new self();
if ( $hasShop ) $model ->hasShop();
$models = $model ->findAll();
$array = array ( '' => '全部' );
foreach ( $models as $model ) {
$array [ $model ->src_id] = $model ->src_name;
}
return $array ;
}
|
2.然后在模版页面中增加JS代码,实现当第一个下拉菜单变化时给第二个下拉菜单进行内容赋值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<script type= 'text/javascript' >
$().ready( function (e) {
$( '#task-order-src-id' ).change( function (e) {
refreshShops();
});
refreshShops();
function refreshShops() {
$.get( '<?php echo $this->createUrl(' getShops ')?>' , {
'srcId' : $( '#task-order-src-id' ).val()
}, function (html_content) {
$( '#task-shop-id' )
.html(html_content)
.find( 'option[value=<?php echo $model->src_shop_id?>]' )
.attr( 'selected' , 'selected' );
});
}
});
</script>
|
在这段JS代码中,实现调取一个程序获取第二个下拉菜单的值(调用Controller中的actionGetShops方法),任何追加到第二个下拉菜单中。
Controller中的actionGetShops方法如下:
1
2
3
4
5
6
7
8
9
|
public function actionGetShops() {
$srcId = $_GET [ 'srcId' ];
$array = ThirdpartInterfaceConfig::options( $srcId );
$htmlContent = "<option value=''>全部</options>" ;
foreach ( $array as $k => $v ) {
$htmlContent .= "<option value='{$k}'>{$v}</option>" ;
}
echo $htmlContent ;
}
|