Yii Framework v1.1.10 绫诲弬鑰

CWidget

system.web.widgets
缁ф壙 class CWidget » CBaseController » CComponent
瀛愮被 CActiveForm, CBaseListView, CBasePager, CBreadcrumbs, CCaptcha, CClipWidget, CDetailView, CFilterWidget, CFlexWidget, CInputWidget, CJuiWidget, CMenu, CPortlet, CTabView, CTreeView
婧愯嚜 1.0
鐗堟湰 $Id: CWidget.php 3515 2011-12-28 12:29:24Z mdomba $
婧愮爜 framework/web/widgets/CWidget.php
CWidget鏄悇绉嶅井浠剁被鐨勫熀绫汇

涓涓井浠舵槸鑷寘鍚殑缁勪欢锛屽畠鍙互鍩轰簬妯″瀷鏁版嵁鏄剧ず 鐩稿簲鐨勫唴瀹广傛垜浠彲浠ュ皢鍏惰涓轰竴涓祵鍏ュ埌鎺у埗鍣ㄧ鐞 鐨勮鍥句腑鐨勫井鎺у埗鍣ㄣ

controller鐩告瘮杈冿紝寰欢娌℃湁鏃㈡病鏈夊姩浣滐紝涔熸病鏈夎繃婊ゅ櫒銆

浣跨敤鏍煎紡鍙弬瑙CBaseControllerCBaseController::widget

鍏叡灞炴

闅愯棌缁ф壙灞炴

灞炴绫诲瀷鎻忚堪瀹氫箟鍦
actionPrefix string actions鐨処D鐨勫墠缂銆 褰撳井浠跺湪CController::actions涓0鏄庝簡 鍔ㄤ綔鎻愪緵鑰咃紝鍙互涓哄叾鍔ㄤ綔鐨処D鎸囧畾鍓嶇紑浠ュ尯鍒 浜庡埆鐨勫井浠舵垨鎺у埗鍣ㄣ傚綋寰欢鐢ㄤ簬鎺у埗鍣 鐨勮鍥句腑鏃讹紝蹇呴』閰嶇疆鍚屾牱鐨勫墠缂銆 CWidget
controller CController 杩斿洖姝ゅ井浠舵墍灞炵殑鎺у埗鍣ㄣ CWidget
id string 杩斿洖姝ゅ井浠剁殑ID銆傚鏋滈渶瑕佺殑璇濓紝灏嗙敓浜т竴涓柊鐨処D骞跺皢鍏惰繑鍥炪 CWidget
owner CBaseController 杩斿洖姝ゅ井浠剁殑鎵鏈夎呮垨鍒涘缓鑰呫 CWidget
skin mixed 寰欢浣跨敤鐨勭毊鑲ょ殑鍚嶇О銆傞粯璁や负鈥渄efault鈥濄 濡傛灉姝ゅ睘鎬ц缃负false锛屽井浠跺皢涓嶄細鏈夌毊鑲よ浣跨敤銆 CWidget
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
render() 娓叉煋涓涓鍥俱 CWidget
renderFile() Renders a view file. CBaseController
renderInternal() Renders a view file. CBaseController
run() 杩愯姝ゅ井浠躲 CWidget
setId() 璁剧疆姝ゅ井浠剁殑ID銆 CWidget
widget() Creates a widget and executes it. CBaseController

灞炴ц缁

actionPrefix 灞炴
public string $actionPrefix;

actions鐨処D鐨勫墠缂銆 褰撳井浠跺湪CController::actions涓0鏄庝簡 鍔ㄤ綔鎻愪緵鑰咃紝鍙互涓哄叾鍔ㄤ綔鐨処D鎸囧畾鍓嶇紑浠ュ尯鍒 浜庡埆鐨勫井浠舵垨鎺у埗鍣ㄣ傚綋寰欢鐢ㄤ簬鎺у埗鍣 鐨勮鍥句腑鏃讹紝蹇呴』閰嶇疆鍚屾牱鐨勫墠缂銆

controller 灞炴 鍙

杩斿洖姝ゅ井浠舵墍灞炵殑鎺у埗鍣ㄣ

id 灞炴
public string getId(boolean $autoGenerate=true)
public void setId(string $value)

杩斿洖姝ゅ井浠剁殑ID銆傚鏋滈渶瑕佺殑璇濓紝灏嗙敓浜т竴涓柊鐨処D骞跺皢鍏惰繑鍥炪

owner 灞炴 鍙

杩斿洖姝ゅ井浠剁殑鎵鏈夎呮垨鍒涘缓鑰呫

skin 灞炴 锛堝彲鐢ㄨ嚜 v1.1锛
public mixed $skin;

寰欢浣跨敤鐨勭毊鑲ょ殑鍚嶇О銆傞粯璁や负鈥渄efault鈥濄 濡傛灉姝ゅ睘鎬ц缃负false锛屽井浠跺皢涓嶄細鏈夌毊鑲よ浣跨敤銆

鍙傝

viewPath 灞炴 鍙
public string getViewPath(boolean $checkTheme=false)

杩斿洖鍖呭惈姝ゅ井浠舵墍闇鐨勮鍥炬枃浠剁殑璺緞銆 榛樿鎯呭喌涓嬭繑鍥炴寰欢绫绘枃浠舵墍鍦ㄧ洰褰曠殑鈥渧iews鈥濆瓙鐩綍锛 濡傛灉$checkTheme璁剧疆涓簍rue, 灏嗚繑鍥炩淭hemeID/views/ClassName鈥濈洰褰曘

鏂规硶璇︾粏

__construct() 鏂规硶
public void __construct(CBaseController $owner=NULL)
$owner CBaseController 姝ゅ井浠剁殑鎵鏈夎呮垨鍒涘缓鑰呫傚彲浠ユ槸寰欢鎴栨帶鍒跺櫒銆
婧愮爜锛 framework/web/widgets/CWidget.php#93 (鏄剧ず)
public function __construct($owner=null)
{
    
$this->_owner=$owner===null?Yii::app()->getController():$owner;
}

鏋勯犲櫒銆

actions() 鏂规硶
public static array actions()
{return} array
婧愮爜锛 framework/web/widgets/CWidget.php#84 (鏄剧ず)
public static function actions()
{
    return array();
}

杩斿洖姝idget浣跨敤鐨勫姩浣滅殑鍒楄〃銆 姝ゆ柟娉曠殑杩斿洖鍊肩殑缁撴瀯涓CController::actions 鐨勮繑鍥炲肩殑缁撴瀯鐩哥被浼笺

褰撲竴涓井浠朵娇鐢ㄤ簡澶氫釜鍔ㄤ綔锛屼綘鍙互浣跨敤姝ゆ柟娉曞0鏄 杩欎簺鍔ㄤ綔銆傝繖涓井浠跺皢鍙樹负涓涓姩浣滄彁渚涜咃紝杩欎簺 鍔ㄤ綔鍙互寰堝鏄撳湴瀵煎叆鍒颁竴涓帶鍒跺櫒涓

娉ㄦ剰锛氬綋鍒涘缓鎸囧悜鐢辨鏂规硶杩斿洖鐨勫姩浣滅殑URL鏃讹紝 纭繚杩欎簺鍔ㄤ綔鐨処D鐨勫墠缂鏄actionPrefix

getController() 鏂规硶
public CController getController()
{return} CController 姝ゅ井浠舵墍灞炵殑鎺у埗鍣ㄣ
婧愮爜锛 framework/web/widgets/CWidget.php#133 (鏄剧ず)
public function getController()
{
    if(
$this->_owner instanceof CController)
        return 
$this->_owner;
    else
        return 
Yii::app()->getController();
}

杩斿洖姝ゅ井浠舵墍灞炵殑鎺у埗鍣ㄣ

getId() 鏂规硶
public string getId(boolean $autoGenerate=true)
$autoGenerate boolean 濡傛灉涔嬪墠鏈缃甀D锛屾槸鍚﹁嚜鍔ㄧ敓鎴怚D銆
{return} string 姝ゅ井浠剁殑ID銆
婧愮爜锛 framework/web/widgets/CWidget.php#112 (鏄剧ず)
public function getId($autoGenerate=true)
{
    if(
$this->_id!==null)
        return 
$this->_id;
    else if(
$autoGenerate)
        return 
$this->_id='yw'.self::$_counter++;
}

杩斿洖姝ゅ井浠剁殑ID銆傚鏋滈渶瑕佺殑璇濓紝灏嗙敓浜т竴涓柊鐨処D骞跺皢鍏惰繑鍥炪

getOwner() 鏂规硶
public CBaseController getOwner()
{return} CBaseController 姝ゅ井浠剁殑鎵鏈夎呮垨鍒涘缓鑰呫傚彲浠ユ槸寰欢鎴栨帶鍒跺櫒銆
婧愮爜锛 framework/web/widgets/CWidget.php#102 (鏄剧ず)
public function getOwner()
{
    return 
$this->_owner;
}

杩斿洖姝ゅ井浠剁殑鎵鏈夎呮垨鍒涘缓鑰呫

getViewFile() 鏂规硶
public string getViewFile(string $viewName)
$viewName string 瑙嗗浘鍚嶏紙涓嶅寘鎷墿灞曞悕锛
{return} string 瑙嗗浘鏂囦欢璺緞銆傚鏋滆鍥炬枃浠朵笉瀛樺湪灏嗚繑鍥瀎alse銆
婧愮爜锛 framework/web/widgets/CWidget.php#200 (鏄剧ず)
public function getViewFile($viewName)
{
    if((
$renderer=Yii::app()->getViewRenderer())!==null)
        
$extension=$renderer->fileExtension;
    else
        
$extension='.php';
    if(
strpos($viewName,'.')) // a path alias
        
$viewFile=Yii::getPathOfAlias($viewName);
    else
    {
        
$viewFile=$this->getViewPath(true).DIRECTORY_SEPARATOR.$viewName;
        if(
is_file($viewFile.$extension))
            return 
Yii::app()->findLocalizedFile($viewFile.$extension);
        else if(
$extension!=='.php' && is_file($viewFile.'.php'))
            return 
Yii::app()->findLocalizedFile($viewFile.'.php');
        
$viewFile=$this->getViewPath(false).DIRECTORY_SEPARATOR.$viewName;
    }

    if(
is_file($viewFile.$extension))
        return 
Yii::app()->findLocalizedFile($viewFile.$extension);
    else if(
$extension!=='.php' && is_file($viewFile.'.php'))
        return 
Yii::app()->findLocalizedFile($viewFile.'.php');
    else
        return 
false;
}

鏍规嵁瑙嗗浘鍚嶆煡鎵捐鍥炬枃浠躲 姝ゆ柟娉曞湪姝ゅ井浠剁殑viewPath涓嬫煡鎵 鍚嶄负鈥淰iewName.php鈥濈殑鏂囦欢銆傚鏋滈渶瑕佸浗闄呭寲鏀寔锛屽皢杩 鍥炰竴涓湰鍦板寲鐨勮鍥炬枃浠躲傚弬瑙CApplication::findLocalizedFile 浠ヤ簡瑙f洿澶氱粏鑺傘 濡傛灉瑙嗗浘鍚嶅寘鍚.鈥濈鍙凤紝瀹冩寚鍚戠殑鏄竴涓矾寰勫埆鍚嶃

getViewPath() 鏂规硶
public string getViewPath(boolean $checkTheme=false)
$checkTheme boolean 鏄惁妫娴嬫寰欢鍖呭惈涓婚涓庡惁銆
{return} string 鍖呭惈姝ゅ井浠剁殑瑙嗗浘鏂囦欢鐨勭洰褰曘
婧愮爜锛 framework/web/widgets/CWidget.php#166 (鏄剧ず)
public function getViewPath($checkTheme=false)
{
    
$className=get_class($this);
    if(isset(
self::$_viewPaths[$className]))
        return 
self::$_viewPaths[$className];
    else
    {
        if(
$checkTheme && ($theme=Yii::app()->getTheme())!==null)
        {
            
$path=$theme->getViewPath().DIRECTORY_SEPARATOR;
            if(
strpos($className,'\\')!==false// namespaced class
                
$path.=str_replace('\\','_',ltrim($className,'\\'));
            else
                
$path.=$className;
            if(
is_dir($path))
                return 
self::$_viewPaths[$className]=$path;
        }

        
$class=new ReflectionClass($className);
        return 
self::$_viewPaths[$className]=dirname($class->getFileName()).DIRECTORY_SEPARATOR.'views';
    }
}

杩斿洖鍖呭惈姝ゅ井浠舵墍闇鐨勮鍥炬枃浠剁殑璺緞銆 榛樿鎯呭喌涓嬭繑鍥炴寰欢绫绘枃浠舵墍鍦ㄧ洰褰曠殑鈥渧iews鈥濆瓙鐩綍锛 濡傛灉$checkTheme璁剧疆涓簍rue, 灏嗚繑鍥炩淭hemeID/views/ClassName鈥濈洰褰曘

init() 鏂规硶
public void init()
婧愮爜锛 framework/web/widgets/CWidget.php#147 (鏄剧ず)
public function init()
{
}

鍒濆鍖栨寰欢銆 鍦ㄦ寰欢鐨勫睘鎬ц鍒濆鍖栧悗锛屾鏂规硶灏嗚CBaseController::createWidgetCBaseController::beginWidget 璋冪敤銆

render() 鏂规硶
public string render(string $view, array $data=NULL, boolean $return=false)
$view string 琚覆鏌撶殑瑙嗗浘鐨勫悕绉般傚弬瑙getViewFile浠ヤ簡瑙h鍥炬枃浠 瑙f瀽鐨勭粏鑺傘
$data array 灏嗕綔涓篜HP鍙橀噺琚鍑猴紝浠庤屽彲浠ュ湪瑙嗗浘鏂囦欢涓浣跨敤鐨勬暟鎹
$return boolean 娓叉煋缁撴灉浣滀负瀛楃涓茶繑鍥烇紝鑰屼笉鏄湪灞忓箷涓婃樉绀恒
{return} string 娓叉煋缁撴灉銆傚鏋滀笉闇瑕佽繑鍥炵粨鏋滐紝鍒欒繑鍥濶ull銆
婧愮爜锛 framework/web/widgets/CWidget.php#241 (鏄剧ず)
public function render($view,$data=null,$return=false)
{
    if((
$viewFile=$this->getViewFile($view))!==false)
        return 
$this->renderFile($viewFile,$data,$return);
    else
        throw new 
CException(Yii::t('yii','{widget} cannot find the view "{view}".',
            array(
'{widget}'=>get_class($this), '{view}'=>$view)));
}

娓叉煋涓涓鍥俱

鎸囧畾鐨勮鍥炬寚鍚戜竴涓狿HP鏂囦欢锛堥氳繃getViewFile瑙f瀽锛夛紝 璇ユ枃浠跺寘鎷湪姝ゆ柟娉曚腑銆傚鏋$data鏄竴涓叧鑱旀暟缁勶紝 瀹冨皢浣滀负PHP鍙橀噺琚鍑猴紝浠庤屽彲浠ュ湪瑙嗗浘鏂囦欢涓浣跨敤銆

鍙傝

run() 鏂规硶
public void run()
婧愮爜锛 framework/web/widgets/CWidget.php#155 (鏄剧ず)
public function run()
{
}

杩愯姝ゅ井浠躲 杩欎釜鏂规硶琚CBaseController::endWidget璋冪敤銆

setId() 鏂规硶
public void setId(string $value)
$value string 姝ゅ井浠剁殑ID銆
婧愮爜锛 framework/web/widgets/CWidget.php#124 (鏄剧ず)
public function setId($value)
{
    
$this->_id=$value;
}

璁剧疆姝ゅ井浠剁殑ID銆

Copyright © 2008-2011 by Yii Software LLC
All Rights Reserved.