CViewAction

优质
小牛编辑
131浏览
2023-12-01
所有包 | 属性 | 方法 | 事件
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的GET指定。 GET参数的名称能通过viewParam自定义。 如果用户没有提供GET参数,将通过defaultView 的指定来显示默认视图。

用户使用格式path.to.view指定一个视图,它被翻译成视图名称 BasePath/path/to/view,这里BasePath通过basePath指定。

注意,用户指定的视图仅能包含单词符号,点和破折号。 而且第一个字母必须是单词字母。

公共属性

隐藏继承属性

属性类型描述定义在
basePathstring视图的基础路径。默认是‘pages’。 基本路径将给任何用户指定的页面视图加前缀。 例如,如果用户请求tutorial.CViewAction
controllerCController拥有这个动作的控制器。CAction
defaultViewstring当用户没有提供viewParam的GET参数时的默认视图名称。默认为‘index’。 它的格式应该是‘path.CViewAction
idstring动作的ID。CAction
layoutmixed被应用到这个视图的布局的名称。 这将在视图被渲染前,被指派到CController::layout。 默认为null,意味着控制器的layout将被使用。 如果为false,没有layout被应用。CViewAction
renderAsTextboolean是否将内容当作PHP脚本或者静态文本来渲染。默认为false。CViewAction
requestedViewstring返回用户请求的视图的名称。CViewAction
viewstring要渲染的视图名称。一旦用户请求的视图被解析, 这个属性将被设置。CViewAction
viewParamstring包含请求视图名称的GET参数的名称。默认为‘view’。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()计算一个PHP表达式,或根据组件上下文执行回调。CComponent
getController()返回拥有这个动作的控制器。CAction
getEventHandlers()返回一个事件的附加处理程序列表。CComponent
getId()返回动作的ID。CAction
getRequestedView()返回用户请求的视图的名称。CViewAction
hasEvent()确定一个事件是否定义。CComponent
hasEventHandler()检查事件是否有附加的处理程序。CComponent
hasProperty()确定属性是否被定义。CComponent
onAfterRender()动作调用渲染方法后发起。CViewAction
onBeforeRender()动作调用渲染方法前发起。CViewAction
raiseEvent()发起一个事件。CComponent
run()执行动作。CViewAction
runWithParams()运行带有请求参数的对象。CAction

受保护方法

隐藏继承方法

方法描述定义在
resolveView()解析用户自定义视图为一个有效的视图名称。CViewAction
runWithParamsInternal()执行一个带有命名参数的对象的方法。CAction

事件

隐藏继承事件

事件描述定义在
onBeforeRender动作调用渲染方法前发起。CViewAction
onAfterRender动作调用渲染方法后发起。CViewAction

属性详细

basePath 属性 public string $basePath;

视图的基础路径。默认是‘pages’。 基本路径将给任何用户指定的页面视图加前缀。 例如,如果用户请求tutorial.chap1,返回的视图名称将是 pages/tutorial/chap1,假设基础路径是pages。 实际的视图文件名通过CController::getViewFile确定。

参见

  • CController::getViewFile
defaultView 属性 public string $defaultView;

当用户没有提供viewParam的GET参数时的默认视图名称。默认为‘index’。 它的格式应该是‘path.to.view’,类似于在GET参数 中给定。

参见

  • basePath
layout 属性 public mixed $layout;

被应用到这个视图的布局的名称。 这将在视图被渲染前,被指派到CController::layout。 默认为null,意味着控制器的layout将被使用。 如果为false,没有layout被应用。

renderAsText 属性 public boolean $renderAsText;

是否将内容当作PHP脚本或者静态文本来渲染。默认为false。

requestedView 属性 只读 public string getRequestedView()

返回用户请求的视图的名称。 如果用户没有指定任何视图,则返回defaultView。

view 属性 public string $view;

要渲染的视图名称。一旦用户请求的视图被解析, 这个属性将被设置。

viewParam 属性 public string $viewParam;

包含请求视图名称的GET参数的名称。默认为‘view’。

方法详细

getRequestedView() 方法
public string getRequestedView()
{return}string用户请求的视图的名称。 使用的格式为‘path.to.view’。
源码: framework/web/actions/CViewAction.php#81 (显示) publicfunctiongetRequestedView()
{
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)
$eventCEvent事件参数
源码: framework/web/actions/CViewAction.php#164 (显示) publicfunctiononAfterRender($event)
{
$this->raiseEvent('onAfterRender',$event);
}

动作调用渲染方法后发起。

onBeforeRender() 方法
public void onBeforeRender(CEvent $event)
$eventCEvent事件参数
源码: framework/web/actions/CViewAction.php#155 (显示) publicfunctiononBeforeRender($event)
{
$this->raiseEvent('onBeforeRender',$event);
}

动作调用渲染方法前发起。 事件处理程序能设置CEvent::handled属性为true, 停止进一步的视图渲染。

resolveView() 方法
protected string resolveView(string $viewPath)
$viewPathstring格式‘path.to.view’的用户自定义视图路径。
{return}string格式‘path/to/view’的被解析的完整视图路径。
源码: framework/web/actions/CViewAction.php#99 (显示) protectedfunctionresolveView($viewPath)
{
//startwithawordcharandhavewordchars,dotsanddashesonly
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;
}
}
thrownewCHttpException(404,Yii::t('yii','Therequestedview"{name}"wasnotfound.',
array('{name}'=>$viewPath)));
}

解析用户自定义视图为一个有效的视图名称。

run() 方法
public void run()
源码: framework/web/actions/CViewAction.php#122 (显示) publicfunctionrun()
{
$this->resolveView($this->getRequestedView());
$controller=$this->getController();
if($this->layout!==null)
{
$layout=$controller->layout;
$controller->layout=$this->layout;
}

$this->onBeforeRender($event=newCEvent($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(newCEvent($this));
}

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

执行动作。 这个方法显示用户请求的视图。