background image

PHP 实例:下拉列表多级联动 dropDownList 示例代码

 

本文为大家分享下拉列表多级联动 dropDownList 具体的实现代码,大家可以参考下哈,
至于一些细节部分后续再补
代码如下:
 

echo

 CHtml::dropDownList('node', '', CHtml::listData(Node::model()-

>findAll(),'name','name'),

array

('empty'=>'--请选择节点--', 

'id' => 'node', 
'ajax'=>

array

'type'=>'POST', 
'url'=>Yii::app()->createUrl('cdnauto/config/getNodeServersByNodeName'), 
'update'=>'#servers', 
'data'=>

array

('node_name'=>'js:$("#node").val()'), 



); 

echo

 " "; 

echo

 CHtml::dropDownList('servers', '', 

array

('--请选择服务器--')); 

 

 

控制器:
cdnauto/controllers/ConfigController.php 

 

复制代码 代码如下:
 

public

 

function

 actionGetNodeServersByNodeName(){ 

// if(!Yii::app()->request->isAjaxRequest) 
// throw new CHttpException(404); 

$node_name

 = 

$_POST

['node_name']; 

$nodeid

 = Node::model()->getNodeId(

$_POST

['node_name']); 

//通过节点名称获取该节点 ID 

$server

 = GossServer::model()->getServerByNodeid(

$nodeid

); 

//通过节点 ID

 

获取服务器信息

//$server 为 array

 

类型,形如 $server = array(array('name'=>'name1'),array('name'=>'name2'));

所以需要两次 foreach 
if

(isset(

$server

)){ 

foreach

 (

$server

 

as

 

$k

=>

$v

){ 

foreach

(

$v

 

as

 

$kk

 => 

$vv

){ 

echo

 CHtml::tag('option', 

array

('value'=>

$kk

), CHtml::encode(

$vv

), true);