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