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


Posted in PHP onJune 27, 2013

视图:
cdnauto/views/config/index.php

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); 
} 
} 
}else{ 
echo CHtml::tag('option', array('value'=>''), 'servers', true); 
} 
}

模型:
GossServer.php
/** 
* 通过节点ID获取该节点下所有的服务器名称 
* @author ysdaniel 
*/ 
public static function getServerByNodeid($nodeid) 
{ 
$sql = "SELECT name FROM OSS_Server WHERE nodeid = '{$nodeid}' "; 
///$sql = "SELECT name,nodeid FROM OSS_Server WHERE nodeid = '{$nodeid}' "; //both ok 
$cmd = Yii::app()->db->createCommand($sql); 
$ret = $cmd->queryAll(); 
if (!$ret){ 
throw new Exception("找不到这个节点对应的服务器"); 
} 
return $ret; 
}

Node.php
/** 
* 通过nodename获取nodeid名 
* @author 
*/ 
public static function getNodeId($name) 
{ 
$sql = "SELECT id FROM OSS_Node WHERE name = '{$name}'"; 
$cmd = Yii::app()->db->createCommand($sql); 
$ret = $cmd->queryAll(); 
if (!$ret){ 
return null; 
//throw new Exception("找不到Node{$name}"); 
} 
return $ret[0]['id']; 
}

其它:
数据表结构
效果:
没有选择节点前:
下拉列表多级联动dropDownList示例代码 
细节有空再补上了。
PHP 相关文章推荐
PHP 读取文件的正确方法
Apr 29 PHP
PHP 读取文件内容代码(txt,js等)
Dec 06 PHP
php 8小时时间差的解决方法小结
Dec 22 PHP
需要注意的几个PHP漏洞小结
Feb 05 PHP
php 删除一个数组中的某个值.兼容多维数组!
Feb 18 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
Jun 24 PHP
php通过字符串调用函数示例
Mar 02 PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
Jan 08 PHP
YII Framework框架教程之国际化实现方法
Mar 14 PHP
PHP创建自己的Composer包方法
Apr 09 PHP
PHP中命名空间的使用例子
Mar 22 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
Jun 27 #PHP
PHP数组排序函数合集 以及它们之间的联系分析
Jun 27 #PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
Jun 27 #PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 #PHP
浅析php中抽象类和接口的概念以及区别
Jun 27 #PHP
领悟php接口中interface存在的意义
Jun 27 #PHP
CURL状态码列表(详细)
Jun 27 #PHP
You might like
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
利用PHP判断是否是连乘数字串的方法示例
2017/07/03 PHP
javascript 写类方式之三
2009/07/05 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
jquery trim() 功能源代码
2011/02/14 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
jquery 定位input元素的几种方法小结
2013/07/28 Javascript
解析JavaScript中点号“.”的多义性
2013/12/02 Javascript
js如何判断用户是否是用微信浏览器
2014/06/05 Javascript
JS实现状态栏跑马灯文字效果代码
2015/10/24 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
python写xml文件的操作实例
2014/10/05 Python
Python数据类型学习笔记
2016/01/13 Python
python字典的常用操作方法小结
2016/05/16 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
python处理“
2019/06/10 Python
django 信号调度机制详解
2019/07/19 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
BeautifulSoup中find和find_all的使用详解
2020/12/07 Python
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
工程师岗位职责
2013/11/08 职场文书
工程造价与管理专业应届生求职信
2013/11/23 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
交通事故赔偿协议书怎么写
2014/10/04 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
应用最多的公文《通知》如何写?
2019/04/02 职场文书
详解Js模块化的作用原理和方案
2021/04/29 Javascript
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技