视图: cdnauto/views/config/index.php <div class="codetitle"><a style="CURSOR: pointer" data="75962" class="copybut" id="copybut75962" onclick="doCopy('code75962')"> 代码如下:<div class="codebody" id="code75962"> 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 <div class="codetitle"><a style="CURSOR: pointer" data="67676" class="copybut" id="copybut67676" onclick="doCopy('code67676')"> 代码如下:<div class="codebody" id="code67676"> 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 <div class="codetitle"><a style="CURSOR: pointer" data="45650" class="copybut" id="copybut45650" onclick="doCopy('code45650')"> 代码如下:<div class="codebody" id="code45650"> /* 通过节点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 <div class="codetitle"><a style="CURSOR: pointer" data="85171" class="copybut" id="copybut85171" onclick="doCopy('code85171')"> 代码如下:<div class="codebody" id="code85171"> /* 通过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']; } 其它: 数据表结构 效果: 没有选择节点前:
<IMG src="https://files.52php.cn/file_images/article/201306/201306271718331.gif?201352717193">
细节有空再补上了。 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|