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

 更新时间:2013年06月27日 17:22:04   作者:  
本文为大家详细介绍下下拉列表多级联动 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'];
}

其它:
数据表结构
效果:
没有选择节点前:
 
细节有空再补上了。

相关文章

  • ThinkPhP5整合微信小程序订阅消息实用代码

    ThinkPhP5整合微信小程序订阅消息实用代码

    记录一下开发小程序消息推送的实例,配合后端tp推送,要使用微信订阅通知功能,需要用户首先在小程序点击订阅后,后台方可推送相关订阅通知模板,否则无法直接推送
    2023-08-08
  • php 生成Tab键或逗号分隔的CSV

    php 生成Tab键或逗号分隔的CSV

    这篇文章主要介绍了php 生成Tab键或逗号分隔的CSV的相关资料,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • laravel框架 api自定义全局异常处理方法

    laravel框架 api自定义全局异常处理方法

    今天小编就为大家分享一篇laravel框架 api自定义全局异常处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 在 Laravel 6 中缓存数据库查询结果的方法

    在 Laravel 6 中缓存数据库查询结果的方法

    这篇文章主要介绍了在 Laravel 6 中缓存数据库查询结果的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • Laravel框架实现model层的增删改查(CURD)操作示例

    Laravel框架实现model层的增删改查(CURD)操作示例

    这篇文章主要介绍了Laravel框架实现model层的增删改查(CURD)操作,结合实例形式分析了Laravel框架模型model层进行数据库的增删改查操作具体实现技巧,需要的朋友可以参考下
    2018-05-05
  • PHP实现今天是星期几的几种写法

    PHP实现今天是星期几的几种写法

    今天是星期几的写法有很多,本文整理了常用的三种,感兴趣的朋友可以了解下
    2013-09-09
  • php写的AES加密解密类分享

    php写的AES加密解密类分享

    这篇文章主要介绍了php写的AES加密解密类,实际是为YII框架写的,不在YII框架时只需替换其中的两句代码即可使用,需要的朋友可以参考下
    2014-06-06
  • PHP-FPM和Nginx的通信机制详解

    PHP-FPM和Nginx的通信机制详解

    这篇文章主要给大家介绍了关于PHP-FPM和Nginx通信机制的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • Laravel5中实现模糊匹配加多条件查询功能的方法

    Laravel5中实现模糊匹配加多条件查询功能的方法

    这篇文章主要介绍了Laravel5中实现模糊匹配加多条件查询功能的方法,结合实例形式分析了Laravel5多条件模糊查询及相关封装操作技巧,需要的朋友可以参考下
    2018-03-03
  • AES加解密在php接口请求过程中的应用示例

    AES加解密在php接口请求过程中的应用示例

    在我们的编程的过程中,经常会遇到加密的情况,怎么才会合理运用,本篇文章主要介绍了AES加解密在php接口请求过程中的应用示例,有需要的可以了解一下。
    2016-10-10

最新评论