下拉列表多级联动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'];
}

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

相关文章

  • Laravel框架定时任务2种实现方式示例

    Laravel框架定时任务2种实现方式示例

    这篇文章主要介绍了Laravel框架定时任务2种实现方式,结合实例形式较为详细的分析了Laravel框架定时任务相关实现方法及操作注意事项,需要的朋友可以参考下
    2018-12-12
  • PHP tp5中使用原生sql查询代码实例

    PHP tp5中使用原生sql查询代码实例

    这篇文章主要介绍了PHP tp5中使用原生sql查询代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • PHP远程采集图片详细教程

    PHP远程采集图片详细教程

    这篇文章主要介绍了PHP远程采集图片详细教程,一步一步实现图片的采集功能,简单的入门教程,需要的朋友可以参考下
    2014-07-07
  • php分页查询的简单实现代码

    php分页查询的简单实现代码

    这篇文章主要为大家详细介绍了php分页查询的简单实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • PHP aes (ecb)解密后乱码问题

    PHP aes (ecb)解密后乱码问题

    这篇文章主要介绍了PHP aes (ecb)解密后乱码问题的解决方法,十分的简单实用,有需要的小伙伴可以参考下。
    2015-06-06
  • 浅谈PHP值mysql操作类

    浅谈PHP值mysql操作类

    下面小编就为大家带来一篇浅谈PHP值mysql操作类。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • Laravel实现登录跳转功能

    Laravel实现登录跳转功能

    网站管理员登录成功后跳转到网站后台,vip用户登录成功后跳转到vip页面,跳转功能怎么实现的呢,下面小编给大家带来了Laravel实现登录跳转功能,需要的朋友可以参考下
    2021-08-08
  • Yii 2.0自带的验证码使用经验分享

    Yii 2.0自带的验证码使用经验分享

    这篇文章主要给大家介绍了关于使用Yii 2.0自带验证码的一些经验,方便新手们快速上手,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-06-06
  • 使用laravel根据用户类型来显示或隐藏字段

    使用laravel根据用户类型来显示或隐藏字段

    今天小编就为大家分享一篇使用laravel根据用户类型来显示或隐藏字段,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 微信随机生成红包金额算法php版

    微信随机生成红包金额算法php版

    这篇文章主要为大家详细介绍了php版的微信随机生成红包金额算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07

最新评论