CTabView
鍖 | system.web.widgets |
---|---|
缁ф壙 | class CTabView » CWidget » CBaseController » CComponent |
婧愯嚜 | 1.0 |
鐗堟湰 | $Id: CTabView.php 3515 2011-12-28 12:29:24Z mdomba $ |
婧愮爜 | framework/web/widgets/CTabView.php |
CTabView鍦ㄥ涓夐」鍗′腑鏄剧ず鍐呭銆
鍦ㄤ换鎰忔椂鍒伙紝鍙湁涓涓夐」鍗″彲瑙併傜敤鎴峰彲浠ョ偣鍑婚夐」鍗″ご閮ㄧ殑鏍囩 浠ラ夋嫨鏌ョ湅鍏朵粬閫夐」鍗$殑鍐呭銆
JavaScript琚敤鏉ユ帶鍒堕夐」鍗′箣闂寸殑鍒囨崲銆傚鏋淛avaScript琚鐢紝 CTabView涔熶細灏藉彲鑳藉湴浠ヤ竴绉嶉傚綋鐨勬柟寮忔潵鏄剧ず鍐呭銆
閰嶇疆tabs灞炴т互鎸囧畾瑕佺鐞嗙殑閫夐」鍗$殑鍐呭鍜岀粨鏋勩 tabs鍙栧緱涓涓敱澶氫釜ID鍜屽唴瀹规槧灏勫凡瀹氫箟鐨勯夐」鍗$粍鎴愮殑鏁扮粍銆 姣忎釜閫夐」鍗$殑瀹氫箟鏄竴涓涓嬫墍绀虹殑缁撴瀯鐨勬暟缁勶細
绀轰緥锛tabs鍙互濡備笅杩涜閰嶇疆锛
榛樿鎯呭喌涓嬶紝绗竴涓夐」鍗″皢琚縺娲汇傚鏋滃笇鏈涚涓娆¤浇鍏ラ〉闈㈡椂婵娲 鍙︿竴涓夐」鍗★紝鍙互璁剧疆activeTab涓哄笇鏈涙縺娲荤殑閫夐」鍗$殑ID銆
鍦ㄤ换鎰忔椂鍒伙紝鍙湁涓涓夐」鍗″彲瑙併傜敤鎴峰彲浠ョ偣鍑婚夐」鍗″ご閮ㄧ殑鏍囩 浠ラ夋嫨鏌ョ湅鍏朵粬閫夐」鍗$殑鍐呭銆
JavaScript琚敤鏉ユ帶鍒堕夐」鍗′箣闂寸殑鍒囨崲銆傚鏋淛avaScript琚鐢紝 CTabView涔熶細灏藉彲鑳藉湴浠ヤ竴绉嶉傚綋鐨勬柟寮忔潵鏄剧ず鍐呭銆
閰嶇疆tabs灞炴т互鎸囧畾瑕佺鐞嗙殑閫夐」鍗$殑鍐呭鍜岀粨鏋勩 tabs鍙栧緱涓涓敱澶氫釜ID鍜屽唴瀹规槧灏勫凡瀹氫箟鐨勯夐」鍗$粍鎴愮殑鏁扮粍銆 姣忎釜閫夐」鍗$殑瀹氫箟鏄竴涓涓嬫墍绀虹殑缁撴瀯鐨勬暟缁勶細
- title锛氶夐」鍗$殑鏍囬銆
- content锛氶渶瑕佸湪閫夐」鍗′腑鏄剧ず鐨勫唴瀹广
- view锛氶渶瑕佸湪姝ら夐」鍗′腑鏄剧ず鐨勮鍥剧殑鍚嶅瓧銆 姝よ鍥惧皢浣跨敤褰撳墠鎺у埗鍣ㄧ殑CController::renderPartial 鏂规硶杩涜娓叉煋銆 濡傛灉鍚屾椂鎸囧畾浜嗏渃ontent鈥濆拰鈥渧iew鈥濓紝鈥渃ontent鈥濆皢琚紭鍏堥噰鐢ㄣ
- url: 褰撶偣閫夋閫夐」鍗℃椂鐢ㄦ埛娴忚鍣ㄥ皢琚噸瀹氬悜鍒版URL銆
- data: 鏁扮粍 (name=>value)锛屽綋鈥渧iew鈥濊璁惧畾鏃舵鏁扮粍灏嗚浼犻掑埌瑙嗗浘涓
绀轰緥锛tabs鍙互濡備笅杩涜閰嶇疆锛
array( 'tab1'=>array( 'title'=>'tab 1 title', 'view'=>'view1', 'data'=>array('model'=>$model), ), 'tab2'=>array( 'title'=>'tab 2 title', 'url'=>'http://www.yiiframework.com/', ), )
榛樿鎯呭喌涓嬶紝绗竴涓夐」鍗″皢琚縺娲汇傚鏋滃笇鏈涚涓娆¤浇鍏ラ〉闈㈡椂婵娲 鍙︿竴涓夐」鍗★紝鍙互璁剧疆activeTab涓哄笇鏈涙縺娲荤殑閫夐」鍗$殑ID銆
鍏叡灞炴
灞炴 | 绫诲瀷 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|---|
actionPrefix | string | actions鐨処D鐨勫墠缂銆 褰撳井浠跺湪CController::actions涓0鏄庝簡 鍔ㄤ綔鎻愪緵鑰咃紝鍙互涓哄叾鍔ㄤ綔鐨処D鎸囧畾鍓嶇紑浠ュ尯鍒 浜庡埆鐨勫井浠舵垨鎺у埗鍣ㄣ傚綋寰欢鐢ㄤ簬鎺у埗鍣 鐨勮鍥句腑鏃讹紝蹇呴』閰嶇疆鍚屾牱鐨勫墠缂銆 | CWidget |
activeTab | string | 椤甸潰鍒濇杞藉叆鏃舵縺娲荤殑閫夐」鍗$殑ID銆 濡傛灉娌℃湁璁剧疆锛屽皢婵娲诲拰涓涓夐」鍗° | CTabView |
controller | CController | 杩斿洖姝ゅ井浠舵墍灞炵殑鎺у埗鍣ㄣ | CWidget |
cssFile | mixed | 姝ゅ井浠朵娇鐢ㄧ殑CSS鏂囦欢銆傞粯璁や负null锛 琛ㄧず浣跨敤涓庢寰欢鎹嗙粦鐨勯粯璁SS鏂囦欢銆 濡傛灉姝ゅ间负false锛屽垯涓嶄娇鐢–SS鏂囦欢銆傚叾浠栨儏鍐典笅锛 鎸囧畾鐨凜SS鏂囦欢灏嗕笌姝ゅ井浠舵崋缁戙 | CTabView |
htmlOptions | array | 鍦℉TML瀹瑰櫒鏍囩涓渶瑕佹覆鏌撶殑闄勫姞HTML閫夐」銆 | CTabView |
id | string | 杩斿洖姝ゅ井浠剁殑ID銆傚鏋滈渶瑕佺殑璇濓紝灏嗙敓浜т竴涓柊鐨処D骞跺皢鍏惰繑鍥炪 | CWidget |
owner | CBaseController | 杩斿洖姝ゅ井浠剁殑鎵鏈夎呮垨鍒涘缓鑰呫 | CWidget |
skin | mixed | 寰欢浣跨敤鐨勭毊鑲ょ殑鍚嶇О銆傞粯璁や负鈥渄efault鈥濄 濡傛灉姝ゅ睘鎬ц缃负false锛屽井浠跺皢涓嶄細鏈夌毊鑲よ浣跨敤銆 | CWidget |
tabs | array | 閫夐」鍗$殑瀹氫箟銆傛鏁扮粍鐨勯敭鏄夐」鍗$殑ID锛
鍊兼槸鐩稿簲鐨勯夐」鍗$殑鍐呭銆
鏁扮粍鐨勫煎繀椤绘槸涓涓暟缁勶紝姝ゆ暟缁勭敱涓嬪垪鍏冪礌缁勬垚锛
|
CTabView |
viewData | array | 浼犻掑埌灞閮ㄨ鍥炬枃浠朵腑琚悇涓夐」鍗′娇鐢ㄧ殑鏁版嵁銆 | CTabView |
viewPath | string | 杩斿洖鍖呭惈姝ゅ井浠舵墍闇鐨勮鍥炬枃浠剁殑璺緞銆 | CWidget |
鍏叡鏂规硶
鏂规硶 | 鎻忚堪 | 瀹氫箟鍦 |
---|---|---|
__call() | 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 | CComponent |
__construct() | 鏋勯犲櫒銆 | CWidget |
__get() | 杩斿洖涓涓睘鎬у笺佷竴涓簨浠跺鐞嗙▼搴忓垪琛ㄦ垨涓涓涓哄悕绉般 | CComponent |
__isset() | 妫鏌ヤ竴涓睘鎬ф槸鍚︿负null銆 | CComponent |
__set() | 璁剧疆涓涓粍浠剁殑灞炴у笺 | CComponent |
__unset() | 璁剧疆涓涓粍浠剁殑灞炴т负null銆 | CComponent |
actions() | 杩斿洖姝idget浣跨敤鐨勫姩浣滅殑鍒楄〃銆 | CWidget |
asa() | 杩斿洖杩欎釜鍚嶅瓧鐨勮涓哄璞° | CComponent |
attachBehavior() | 闄勫姞涓涓涓哄埌缁勪欢銆 | CComponent |
attachBehaviors() | 闄勫姞涓涓涓哄垪琛ㄥ埌缁勪欢銆 | CComponent |
attachEventHandler() | 涓轰簨浠堕檮鍔犱竴涓簨浠跺鐞嗙▼搴忋 | CComponent |
beginCache() | Begins fragment caching. | CBaseController |
beginClip() | Begins recording a clip. | CBaseController |
beginContent() | Begins the rendering of content that is to be decorated by the specified view. | CBaseController |
beginWidget() | Creates a widget and executes it. | CBaseController |
canGetProperty() | 纭畾灞炴ф槸鍚﹀彲璇汇 | CComponent |
canSetProperty() | 纭畾灞炴ф槸鍚﹀彲鍐欍 | CComponent |
createWidget() | Creates a widget and initializes it. | CBaseController |
detachBehavior() | 浠庣粍浠朵腑鍒嗙涓涓涓恒 | CComponent |
detachBehaviors() | 浠庣粍浠朵腑鍒嗙鎵鏈夎涓恒 | CComponent |
detachEventHandler() | 鍒嗙涓涓瓨鍦ㄧ殑浜嬩欢澶勭悊绋嬪簭銆 | CComponent |
disableBehavior() | 绂佺敤涓涓檮鍔犺涓恒 | CComponent |
disableBehaviors() | 绂佺敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
enableBehavior() | 鍚敤涓涓檮鍔犺涓恒 | CComponent |
enableBehaviors() | 鍚敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 | CComponent |
endCache() | Ends fragment caching. | CBaseController |
endClip() | Ends recording a clip. | CBaseController |
endContent() | Ends the rendering of content. | CBaseController |
endWidget() | Ends the execution of the named widget. | CBaseController |
evaluateExpression() | 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 | CComponent |
getController() | 杩斿洖姝ゅ井浠舵墍灞炵殑鎺у埗鍣ㄣ | CWidget |
getEventHandlers() | 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 | CComponent |
getId() | 杩斿洖姝ゅ井浠剁殑ID銆傚鏋滈渶瑕佺殑璇濓紝灏嗙敓浜т竴涓柊鐨処D骞跺皢鍏惰繑鍥炪 | CWidget |
getOwner() | 杩斿洖姝ゅ井浠剁殑鎵鏈夎呮垨鍒涘缓鑰呫 | CWidget |
getViewFile() | 鏍规嵁瑙嗗浘鍚嶆煡鎵捐鍥炬枃浠躲 | CWidget |
getViewPath() | 杩斿洖鍖呭惈姝ゅ井浠舵墍闇鐨勮鍥炬枃浠剁殑璺緞銆 | CWidget |
hasEvent() | 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 | CComponent |
hasEventHandler() | 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 | CComponent |
hasProperty() | 纭畾灞炴ф槸鍚﹁瀹氫箟銆 | CComponent |
init() | 鍒濆鍖栨寰欢銆 | CWidget |
raiseEvent() | 鍙戣捣涓涓簨浠躲 | CComponent |
registerClientScript() | 娉ㄥ唽蹇呴』鐨凜SS鍜孞avaScript銆 | CTabView |
registerCssFile() | 娉ㄥ唽蹇呴』鐨凜SS鏂囦欢銆 | CTabView |
render() | 娓叉煋涓涓鍥俱 | CWidget |
renderFile() | Renders a view file. | CBaseController |
renderInternal() | Renders a view file. | CBaseController |
run() | 杩愯姝ゅ井浠躲 | CTabView |
setId() | 璁剧疆姝ゅ井浠剁殑ID銆 | CWidget |
widget() | Creates a widget and executes it. | CBaseController |
灞炴ц缁
activeTab
灞炴
public string $activeTab;
椤甸潰鍒濇杞藉叆鏃舵縺娲荤殑閫夐」鍗$殑ID銆 濡傛灉娌℃湁璁剧疆锛屽皢婵娲诲拰涓涓夐」鍗°
cssFile
灞炴
public mixed $cssFile;
姝ゅ井浠朵娇鐢ㄧ殑CSS鏂囦欢銆傞粯璁や负null锛 琛ㄧず浣跨敤涓庢寰欢鎹嗙粦鐨勯粯璁SS鏂囦欢銆 濡傛灉姝ゅ间负false锛屽垯涓嶄娇鐢–SS鏂囦欢銆傚叾浠栨儏鍐典笅锛 鎸囧畾鐨凜SS鏂囦欢灏嗕笌姝ゅ井浠舵崋缁戙
htmlOptions
灞炴
public array $htmlOptions;
鍦℉TML瀹瑰櫒鏍囩涓渶瑕佹覆鏌撶殑闄勫姞HTML閫夐」銆
tabs
灞炴
public array $tabs;
閫夐」鍗$殑瀹氫箟銆傛鏁扮粍鐨勯敭鏄夐」鍗$殑ID锛 鍊兼槸鐩稿簲鐨勯夐」鍗$殑鍐呭銆 鏁扮粍鐨勫煎繀椤绘槸涓涓暟缁勶紝姝ゆ暟缁勭敱涓嬪垪鍏冪礌缁勬垚锛
- title: 閫夐」鍗$殑鏍囬銆備綘搴斿綋纭繚瀹冩槸缁忚繃HTML缂栫爜鐨勩
- content: 闇瑕佹樉绀哄湪閫夐」鍗′腑鐨勫唴瀹广
- view: 闇瑕佸湪閫夐」鍗′腑鏄剧ず鐨勮鍥剧殑鍚嶅瓧銆 姝よ鍥惧皢浣跨敤褰撳墠鎺у埗鍣ㄧ殑CController::renderPartial 鏂规硶杩涜娓叉煋銆 濡傛灉鍚屾椂鎸囧畾浜嗏渃ontent鈥濆拰鈥渧iew鈥濓紝鈥渃ontent鈥濆皢琚紭鍏堥噰鐢ㄣ
- url: 褰撶偣閫夋閫夐」鍗℃椂鐢ㄦ埛娴忚鍣ㄥ皢琚噸瀹氬悜鍒版URL銆
- data: 鏁扮粍 (name=>value)锛屽綋鈥渧iew鈥濊璁惧畾鏃舵鏁扮粍灏嗚浼犻掑埌瑙嗗浘涓 姝ら夐」浠1.1.1鐗堝紑濮嬪彲鐢ㄣ
array( 'tab1'=>array( 'title'=>'tab 1 title', 'view'=>'view1', ), 'tab2'=>array( 'title'=>'tab 2 title', 'url'=>'http://www.yiiframework.com/', ), )
viewData
灞炴
public array $viewData;
浼犻掑埌灞閮ㄨ鍥炬枃浠朵腑琚悇涓夐」鍗′娇鐢ㄧ殑鏁版嵁銆
鏂规硶璇︾粏
registerClientScript()
鏂规硶
public void registerClientScript()
|
婧愮爜锛 framework/web/widgets/CTabView.php#146 (鏄剧ず)
public function registerClientScript()
{
$cs=Yii::app()->getClientScript();
$cs->registerCoreScript('yiitab');
$id=$this->getId();
$cs->registerScript('Yii.CTabView#'.$id,"jQuery(\"#{$id}\").yiitab();");
if($this->cssFile!==false)
self::registerCssFile($this->cssFile);
}
娉ㄥ唽蹇呴』鐨凜SS鍜孞avaScript銆
registerCssFile()
鏂规硶
public static void registerCssFile(string $url=NULL)
| ||
$url | string | CSS鏂囦欢鐨刄RL銆傚鏋滀负null锛屽皢浣跨敤榛樿CSS鏂囦欢鐨刄RL銆 |
婧愮爜锛 framework/web/widgets/CTabView.php#161 (鏄剧ず)
public static function registerCssFile($url=null)
{
$cs=Yii::app()->getClientScript();
if($url===null)
$url=$cs->getCoreScriptUrl().'/yiitab/jquery.yiitab.css';
$cs->registerCssFile($url,'screen');
}
娉ㄥ唽蹇呴』鐨凜SS鏂囦欢銆
renderBody()
鏂规硶
protected void renderBody()
|
婧愮爜锛 framework/web/widgets/CTabView.php#188 (鏄剧ず)
protected function renderBody()
{
foreach($this->tabs as $id=>$tab)
{
$inactive=$id!==$this->activeTab?' style="display:none"' : '';
echo "<div class=\"view\" id=\"{$id}\"{$inactive}>\n";
if(isset($tab['content']))
echo $tab['content'];
else if(isset($tab['view']))
{
if(isset($tab['data']))
{
if(is_array($this->viewData))
$data=array_merge($this->viewData, $tab['data']);
else
$data=$tab['data'];
}
else
$data=$this->viewData;
$this->getController()->renderPartial($tab['view'], $data);
}
echo "</div><!-- {$id} -->\n";
}
}
娓叉煋涓讳綋閮ㄥ垎銆
renderHeader()
鏂规硶
protected void renderHeader()
|
婧愮爜锛 framework/web/widgets/CTabView.php#172 (鏄剧ず)
protected function renderHeader()
{
echo "<ul class=\"tabs\">\n";
foreach($this->tabs as $id=>$tab)
{
$title=isset($tab['title'])?$tab['title']:'undefined';
$active=$id===$this->activeTab?' class="active"' : '';
$url=isset($tab['url'])?$tab['url']:"#{$id}";
echo "<li><a href=\"{$url}\"{$active}>{$title}</a></li>\n";
}
echo "</ul>\n";
}
娓叉煋鏍囧ご閮ㄥ垎銆
run()
鏂规硶
public void run()
|
婧愮爜锛 framework/web/widgets/CTabView.php#119 (鏄剧ず)
public function run()
{
if(empty($this->tabs))
return;
if($this->activeTab===null || !isset($this->tabs[$this->activeTab]))
{
reset($this->tabs);
list($this->activeTab, )=each($this->tabs);
}
$htmlOptions=$this->htmlOptions;
$htmlOptions['id']=$this->getId();
if(!isset($htmlOptions['class']))
$htmlOptions['class']=self::CSS_CLASS;
$this->registerClientScript();
echo CHtml::openTag('div',$htmlOptions)."\n";
$this->renderHeader();
$this->renderBody();
echo CHtml::closeTag('div');
}
杩愯姝ゅ井浠躲