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

2015-01-24信息快讯网

本文为大家详细介绍下下拉列表多级联动 dropDownList具体的实现代码,感兴趣的朋友可以参考下哈,至于一些细节部分后续再补

视图:
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中isset()和unset()函数的用法小结
详解PHP中strlen和mb_strlen函数的区别
php发送post请求函数分享
PHP中is_file不能替代file_exists的理由
PHP static局部静态变量和全局静态变量总结
php中的strpos使用示例
PHP中redis的用法深入解析
php检测iis环境是否支持htaccess的方法
php $_SERVER windows系统与linux系统下的区别说明
php根据isbn书号查询amazon网站上的图书信息的示例
分享下页面关键字抓取components.arrow.com站点代码
PHP $_FILES中error返回值详解
linux系统下php安装mbstring扩展的二种方法
linux实现php定时执行cron任务详解
phpstrom使用xdebug配置方法
PHP函数microtime()用法与说明
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
php生成图形(Libchart)实例
PHP遍历某个目录下的所有文件和子文件夹的实现代码
解析PHP函数array_flip()在重复数组元素删除中的作用
解析linux下安装memcacheq(mcq)全过程笔记
php 去除html标记--strip_tags与htmlspecialchars的区别详解
解析strtr函数的效率问题
比较strtr, str_replace和preg_replace三个函数的效率
解析php file_exists无效的解决办法
解析Ubuntu下crontab命令的用法
关于crontab的使用详解
关于Zend Studio 配色方案插件的介绍
解析php中eclipse 用空格替换 tab键
解析crontab php自动运行的方法
关于更改Zend Studio/Eclipse代码风格主题的介绍
Function eregi is deprecated (解决方法)
解析php函数method_exists()与is_callable()的区别
PHP 清空varnish 缓存的详解(包括指定站点下的)
PHP array_multisort() 函数的深入解析
解析Linux下Varnish缓存的配置优化
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
php class中public,private,protected的区别以及实例分析
©2014-2024 dbsqp.com