ホームページ  >  記事  >  バックエンド開発  >  DropDownList マルチレベル連携 DropDownList サンプルコード_PHP チュートリアル

DropDownList マルチレベル連携 DropDownList サンプルコード_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:02:00857ブラウズ

ビュー:
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 CHtml::dropDownList('サーバー', '', 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 は $server = array(array('name'=>' の形式) の配列型ですname1'),array('name'=> 'name2'));したがって、2 つの 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}' "; //両方OK
$cmd = Yii::app()->db- >createCommand($sql);
$ret = $cmd-> ;queryAll();
if (!$ret){
throw new Exception("このノードに対応するサーバーが見つかりません"); return $ret;
}


Node.php


コードをコピー
コードは次のとおりです: /*** ノード名を通じてノード ID 名を取得します
* @author
*/
public static function getNodeId($name)
{
$ sql = "SELECT id FROM OSS_Node WHERE name = '{$name}'";
$ cmd = Yii::app()->db->createCommand($sql); queryAll();
if (!$ret){
return null;
//throw new Exception("Node{$name} not found")
return $ret[0]['id']; }


その他:
データテーブル構造
効果:
ノードが選択されていない前:

時間があるときに詳細を追加します。



http://www.bkjia.com/PHPjc/327952.html
DropDownList マルチレベル連携 DropDownList サンプルコード_PHP チュートリアルwww.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/327952.html技術記事ビュー: cdnauto/views/config/index.php 次のようにコードをコピーします: echo CHtml::dropDownList('node', '', CHtml::listData(Node::model()-findAll(),'name', ' name'),array('empty'='--選択してください...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。