Yii Framework v1.1.10 绫诲弬鑰

CViewAction

system.web.actions
缁ф壙 class CViewAction » CAction » CComponent
瀹炵幇 IAction
婧愯嚜 1.0
鐗堟湰 $Id: CViewAction.php 3426 2011-10-25 00:01:09Z alexander.makarow $
婧愮爜 framework/web/actions/CViewAction.php
CViewAction琛ㄧず涓涓姩浣滄寜鐓х敤鎴锋寚瀹氱殑鍙傛暟鏄剧ず涓涓鍥俱

榛樿鎯呭喌涓嬶紝瑕佹樉绀虹殑瑙嗗浘閫氳繃view鐨凣ET鎸囧畾銆 GET鍙傛暟鐨勫悕绉拌兘閫氳繃viewParam鑷畾涔夈 濡傛灉鐢ㄦ埛娌℃湁鎻愪緵GET鍙傛暟锛屽皢閫氳繃defaultView 鐨勬寚瀹氭潵鏄剧ず榛樿瑙嗗浘銆

鐢ㄦ埛浣跨敤鏍煎紡path.to.view鎸囧畾涓涓鍥撅紝瀹冭缈昏瘧鎴愯鍥惧悕绉 BasePath/path/to/view锛岃繖閲BasePath閫氳繃basePath鎸囧畾銆

娉ㄦ剰锛岀敤鎴锋寚瀹氱殑瑙嗗浘浠呰兘鍖呭惈鍗曡瘝绗﹀彿锛岀偣鍜岀牬鎶樺彿銆 鑰屼笖绗竴涓瓧姣嶅繀椤绘槸鍗曡瘝瀛楁瘝銆

鍏叡灞炴

闅愯棌缁ф壙灞炴

灞炴绫诲瀷鎻忚堪瀹氫箟鍦
basePath string 瑙嗗浘鐨勫熀纭璺緞銆傞粯璁ゆ槸鈥榩ages鈥欍 鍩烘湰璺緞灏嗙粰浠讳綍鐢ㄦ埛鎸囧畾鐨勯〉闈㈣鍥惧姞鍓嶇紑銆 渚嬪锛屽鏋滅敤鎴疯姹tutorial. CViewAction
controller CController 鎷ユ湁杩欎釜鍔ㄤ綔鐨勬帶鍒跺櫒銆 CAction
defaultView string 褰撶敤鎴锋病鏈夋彁渚viewParam鐨凣ET鍙傛暟鏃剁殑榛樿瑙嗗浘鍚嶇О銆傞粯璁や负鈥榠ndex鈥欍 瀹冪殑鏍煎紡搴旇鏄榩ath. CViewAction
id string 鍔ㄤ綔鐨処D銆 CAction
layout mixed 琚簲鐢ㄥ埌杩欎釜瑙嗗浘鐨勫竷灞鐨勫悕绉般 杩欏皢鍦ㄨ鍥捐娓叉煋鍓嶏紝琚寚娲惧埌CController::layout銆 榛樿涓簄ull锛屾剰鍛崇潃鎺у埗鍣ㄧ殑layout灏嗚浣跨敤銆 濡傛灉涓篺alse锛屾病鏈塴ayout琚簲鐢ㄣ CViewAction
renderAsText boolean 鏄惁灏嗗唴瀹瑰綋浣淧HP鑴氭湰鎴栬呴潤鎬佹枃鏈潵娓叉煋銆傞粯璁や负false銆 CViewAction
requestedView string 杩斿洖鐢ㄦ埛璇锋眰鐨勮鍥剧殑鍚嶇О銆 CViewAction
view string 瑕佹覆鏌撶殑瑙嗗浘鍚嶇О銆備竴鏃︾敤鎴疯姹傜殑瑙嗗浘琚В鏋愶紝 杩欎釜灞炴у皢琚缃 CViewAction
viewParam string 鍖呭惈璇锋眰瑙嗗浘鍚嶇О鐨凣ET鍙傛暟鐨勫悕绉般傞粯璁や负鈥榲iew鈥欍 CViewAction

鍏叡鏂规硶

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
__call() 濡傛灉绫讳腑娌℃湁璋冪殑鏂规硶鍚嶏紝鍒欒皟鐢ㄨ繖涓柟娉曘 CComponent
__construct() 鏋勯犳柟娉曘 CAction
__get() 杩斿洖涓涓睘鎬у笺佷竴涓簨浠跺鐞嗙▼搴忓垪琛ㄦ垨涓涓涓哄悕绉般 CComponent
__isset() 妫鏌ヤ竴涓睘鎬ф槸鍚︿负null銆 CComponent
__set() 璁剧疆涓涓粍浠剁殑灞炴у笺 CComponent
__unset() 璁剧疆涓涓粍浠剁殑灞炴т负null銆 CComponent
asa() 杩斿洖杩欎釜鍚嶅瓧鐨勮涓哄璞° CComponent
attachBehavior() 闄勫姞涓涓涓哄埌缁勪欢銆 CComponent
attachBehaviors() 闄勫姞涓涓涓哄垪琛ㄥ埌缁勪欢銆 CComponent
attachEventHandler() 涓轰簨浠堕檮鍔犱竴涓簨浠跺鐞嗙▼搴忋 CComponent
canGetProperty() 纭畾灞炴ф槸鍚﹀彲璇汇 CComponent
canSetProperty() 纭畾灞炴ф槸鍚﹀彲鍐欍 CComponent
detachBehavior() 浠庣粍浠朵腑鍒嗙涓涓涓恒 CComponent
detachBehaviors() 浠庣粍浠朵腑鍒嗙鎵鏈夎涓恒 CComponent
detachEventHandler() 鍒嗙涓涓瓨鍦ㄧ殑浜嬩欢澶勭悊绋嬪簭銆 CComponent
disableBehavior() 绂佺敤涓涓檮鍔犺涓恒 CComponent
disableBehaviors() 绂佺敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 CComponent
enableBehavior() 鍚敤涓涓檮鍔犺涓恒 CComponent
enableBehaviors() 鍚敤缁勪欢闄勫姞鐨勬墍鏈夎涓恒 CComponent
evaluateExpression() 璁$畻涓涓狿HP琛ㄨ揪寮忥紝鎴栨牴鎹粍浠朵笂涓嬫枃鎵ц鍥炶皟銆 CComponent
getController() 杩斿洖鎷ユ湁杩欎釜鍔ㄤ綔鐨勬帶鍒跺櫒銆 CAction
getEventHandlers() 杩斿洖涓涓簨浠剁殑闄勫姞澶勭悊绋嬪簭鍒楄〃銆 CComponent
getId() 杩斿洖鍔ㄤ綔鐨処D銆 CAction
getRequestedView() 杩斿洖鐢ㄦ埛璇锋眰鐨勮鍥剧殑鍚嶇О銆 CViewAction
hasEvent() 纭畾涓涓簨浠舵槸鍚﹀畾涔夈 CComponent
hasEventHandler() 妫鏌ヤ簨浠舵槸鍚︽湁闄勫姞鐨勫鐞嗙▼搴忋 CComponent
hasProperty() 纭畾灞炴ф槸鍚﹁瀹氫箟銆 CComponent
onAfterRender() 鍔ㄤ綔璋冪敤娓叉煋鏂规硶鍚庡彂璧枫 CViewAction
onBeforeRender() 鍔ㄤ綔璋冪敤娓叉煋鏂规硶鍓嶅彂璧枫 CViewAction
raiseEvent() 鍙戣捣涓涓簨浠躲 CComponent
run() 鎵ц鍔ㄤ綔銆 CViewAction
runWithParams() 杩愯甯︽湁璇锋眰鍙傛暟鐨勫璞° CAction

鍙椾繚鎶ゆ柟娉

闅愯棌缁ф壙鏂规硶

鏂规硶鎻忚堪瀹氫箟鍦
resolveView() 瑙f瀽鐢ㄦ埛鑷畾涔夎鍥句负涓涓湁鏁堢殑瑙嗗浘鍚嶇О銆 CViewAction
runWithParamsInternal() 鎵ц涓涓甫鏈夊懡鍚嶅弬鏁扮殑瀵硅薄鐨勬柟娉曘 CAction

浜嬩欢

闅愯棌缁ф壙浜嬩欢

浜嬩欢鎻忚堪瀹氫箟鍦
onBeforeRender 鍔ㄤ綔璋冪敤娓叉煋鏂规硶鍓嶅彂璧枫 CViewAction
onAfterRender 鍔ㄤ綔璋冪敤娓叉煋鏂规硶鍚庡彂璧枫 CViewAction

灞炴ц缁

basePath 灞炴
public string $basePath;

瑙嗗浘鐨勫熀纭璺緞銆傞粯璁ゆ槸鈥榩ages鈥欍 鍩烘湰璺緞灏嗙粰浠讳綍鐢ㄦ埛鎸囧畾鐨勯〉闈㈣鍥惧姞鍓嶇紑銆 渚嬪锛屽鏋滅敤鎴疯姹tutorial.chap1锛岃繑鍥炵殑瑙嗗浘鍚嶇О灏嗘槸 pages/tutorial/chap1锛屽亣璁惧熀纭璺緞鏄pages銆 瀹為檯鐨勮鍥炬枃浠跺悕閫氳繃CController::getViewFile纭畾銆

defaultView 灞炴
public string $defaultView;

褰撶敤鎴锋病鏈夋彁渚viewParam鐨凣ET鍙傛暟鏃剁殑榛樿瑙嗗浘鍚嶇О銆傞粯璁や负鈥榠ndex鈥欍 瀹冪殑鏍煎紡搴旇鏄榩ath.to.view鈥欙紝绫讳技浜庡湪GET鍙傛暟 涓粰瀹氥

鍙傝

layout 灞炴
public mixed $layout;

琚簲鐢ㄥ埌杩欎釜瑙嗗浘鐨勫竷灞鐨勫悕绉般 杩欏皢鍦ㄨ鍥捐娓叉煋鍓嶏紝琚寚娲惧埌CController::layout銆 榛樿涓簄ull锛屾剰鍛崇潃鎺у埗鍣ㄧ殑layout灏嗚浣跨敤銆 濡傛灉涓篺alse锛屾病鏈塴ayout琚簲鐢ㄣ

renderAsText 灞炴
public boolean $renderAsText;

鏄惁灏嗗唴瀹瑰綋浣淧HP鑴氭湰鎴栬呴潤鎬佹枃鏈潵娓叉煋銆傞粯璁や负false銆

requestedView 灞炴 鍙
public string getRequestedView()

杩斿洖鐢ㄦ埛璇锋眰鐨勮鍥剧殑鍚嶇О銆 濡傛灉鐢ㄦ埛娌℃湁鎸囧畾浠讳綍瑙嗗浘锛屽垯杩斿洖defaultView

view 灞炴
public string $view;

瑕佹覆鏌撶殑瑙嗗浘鍚嶇О銆備竴鏃︾敤鎴疯姹傜殑瑙嗗浘琚В鏋愶紝 杩欎釜灞炴у皢琚缃

viewParam 灞炴
public string $viewParam;

鍖呭惈璇锋眰瑙嗗浘鍚嶇О鐨凣ET鍙傛暟鐨勫悕绉般傞粯璁や负鈥榲iew鈥欍

鏂规硶璇︾粏

getRequestedView() 鏂规硶
public string getRequestedView()
{return} string 鐢ㄦ埛璇锋眰鐨勮鍥剧殑鍚嶇О銆 浣跨敤鐨勬牸寮忎负鈥榩ath.to.view鈥欍
婧愮爜锛 framework/web/actions/CViewAction.php#81 (鏄剧ず)
public function getRequestedView()
{
    if(
$this->_viewPath===null)
    {
        if(!empty(
$_GET[$this->viewParam]))
            
$this->_viewPath=$_GET[$this->viewParam];
        else
            
$this->_viewPath=$this->defaultView;
    }
    return 
$this->_viewPath;
}

杩斿洖鐢ㄦ埛璇锋眰鐨勮鍥剧殑鍚嶇О銆 濡傛灉鐢ㄦ埛娌℃湁鎸囧畾浠讳綍瑙嗗浘锛屽垯杩斿洖defaultView

onAfterRender() 鏂规硶
public void onAfterRender(CEvent $event)
$event CEvent 浜嬩欢鍙傛暟
婧愮爜锛 framework/web/actions/CViewAction.php#164 (鏄剧ず)
public function onAfterRender($event)
{
    
$this->raiseEvent('onAfterRender',$event);
}

鍔ㄤ綔璋冪敤娓叉煋鏂规硶鍚庡彂璧枫

onBeforeRender() 鏂规硶
public void onBeforeRender(CEvent $event)
$event CEvent 浜嬩欢鍙傛暟
婧愮爜锛 framework/web/actions/CViewAction.php#155 (鏄剧ず)
public function onBeforeRender($event)
{
    
$this->raiseEvent('onBeforeRender',$event);
}

鍔ㄤ綔璋冪敤娓叉煋鏂规硶鍓嶅彂璧枫 浜嬩欢澶勭悊绋嬪簭鑳借缃CEvent::handled灞炴т负true锛 鍋滄杩涗竴姝ョ殑瑙嗗浘娓叉煋銆

resolveView() 鏂规硶
protected string resolveView(string $viewPath)
$viewPath string 鏍煎紡鈥榩ath.to.view鈥欑殑鐢ㄦ埛鑷畾涔夎鍥捐矾寰勩
{return} string 鏍煎紡鈥榩ath/to/view鈥欑殑琚В鏋愮殑瀹屾暣瑙嗗浘璺緞銆
婧愮爜锛 framework/web/actions/CViewAction.php#99 (鏄剧ず)
protected function resolveView($viewPath)
{
    
// start with a word char and have word chars, dots and dashes only
    
if(preg_match('/^\w[\w\.\-]*$/',$viewPath))
    {
        
$view=strtr($viewPath,'.','/');
        if(!empty(
$this->basePath))
            
$view=$this->basePath.'/'.$view;
        if(
$this->getController()->getViewFile($view)!==false)
        {
            
$this->view=$view;
            return;
        }
    }
    throw new 
CHttpException(404,Yii::t('yii','The requested view "{name}" was not found.',
        array(
'{name}'=>$viewPath)));
}

瑙f瀽鐢ㄦ埛鑷畾涔夎鍥句负涓涓湁鏁堢殑瑙嗗浘鍚嶇О銆

run() 鏂规硶
public void run()
婧愮爜锛 framework/web/actions/CViewAction.php#122 (鏄剧ず)
public function run()
{
    
$this->resolveView($this->getRequestedView());
    
$controller=$this->getController();
    if(
$this->layout!==null)
    {
        
$layout=$controller->layout;
        
$controller->layout=$this->layout;
    }

    
$this->onBeforeRender($event=new CEvent($this));
    if(!
$event->handled)
    {
        if(
$this->renderAsText)
        {
            
$text=file_get_contents($controller->getViewFile($this->view));
            
$controller->renderText($text);
        }
        else
            
$controller->render($this->view);
        
$this->onAfterRender(new CEvent($this));
    }

    if(
$this->layout!==null)
        
$controller->layout=$layout;
}

鎵ц鍔ㄤ綔銆 杩欎釜鏂规硶鏄剧ず鐢ㄦ埛璇锋眰鐨勮鍥俱

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