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 ; } |