下拉式清單多級聯動dropDownList範例程式碼_PHP教程

來源:互聯網
上載者:User
視圖:
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'];
}

其它:
資料表結構
效果:
沒有選擇節點前:

細節有空再補上了。

http://www.bkjia.com/PHPjc/327952.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/327952.htmlTechArticle視圖: cdnauto/views/config/index.php 複製代碼 代碼如下: echo CHtml::dropDownList('node', '', CHtml::listData(Node::model()-findAll(),'name','name'),array('empty'='--請選...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.