Class yii\base\View

继承yii\base\View » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable, yii\base\DynamicContentAwareInterface
子类yii\web\View
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/base/View.php

View 表示 MVC 模式中的视图对象.

View 提供了一组用于渲染目的的方法(eg. render()).

有关 View 的更多详细信息和使用信息, 请参阅 权威指南 - 应用结构 - 视图(Views).

公共属性

隐藏继承的属性

属性类型描述定义在
$behaviors yii\base\Behavior[] 附加到此组件的行为列表. 该属性是只读的. yii\base\Component
$blocks array 一个命名输出块的列表. yii\base\View
$cacheStack array|yii\base\DynamicContentAwareInterface[] 当前活动的动态内容类实例的列表. yii\base\View
$context yii\base\ViewContextInterface 在其中调用 renderFile() 方法的上下文. yii\base\View
$defaultExtension string 默认的视图文件扩展名. yii\base\View
$dynamicContents yii\base\DynamicContentAwareInterface[] 支持动态内容的类实例. yii\base\View
$dynamicPlaceholders array 嵌入动态内容的占位符列表. yii\base\View
$params array 在视图模板之间共享的自定义参数. yii\base\View
$renderers array 可用的渲染器列表, 这些渲染器由其对应的受支持文件扩展名索引. yii\base\View
$theme yii\base\Theme|array|string 主题对象或用于创建主题对象的配置. yii\base\View
$viewFile string|boolean 当前正在渲染的视图文件. 如果未渲染任何视图文件, 则为false. 该属性是只读的. yii\base\View

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的指定的方法. yii\base\Component
__clone() 在通过克隆现有对象创建对象之后调用此方法. yii\base\Component
__construct() 构造函数. yii\base\BaseObject
__get() 返回组件属性的值. yii\base\Component
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\Component
__set() 设置组件属性的值. yii\base\Component
__unset() 将组件属性设置为null. yii\base\Component
addDynamicPlaceholder() 为动态内容添加一个占位符. yii\base\View
afterRender() 此方法在 renderFile() 渲染视图文件后立即调用. yii\base\View
attachBehavior() 将行为附加到此组件. yii\base\Component
attachBehaviors() 将行为列表附加到组件. yii\base\Component
beforeRender() 此方法在 renderFile() 渲染视图文件之前调用. yii\base\View
beginBlock() 开始录制一个数据块. yii\base\View
beginCache() 开始片段缓存. yii\base\View
beginContent() 开始渲染将由指定的视图进行装饰的内容. yii\base\View
beginPage() 标记页面的开始. yii\base\View
behaviors() 返回此组件应该具有的行为列表. yii\base\Component
canGetProperty() 返回一个值, 指示属性是否可读取. yii\base\Component
canSetProperty() 返回一个值, 指示属性是否可设置. yii\base\Component
className() 返回此类的完全限定名称. yii\base\BaseObject
detachBehavior() 从组件中分离一个行为. yii\base\Component
detachBehaviors() 分离组件中的所有行为. yii\base\Component
endBlock() 结束录制一个数据块. yii\base\View
endCache() 结束片段缓存. yii\base\View
endContent() 结束内容的呈现. yii\base\View
endPage() 标记页面的结尾. yii\base\View
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件. yii\base\Component
evaluateDynamicContent() 计算给定的 PHP 语句. yii\base\View
getBehavior() 返回指定的行为对象. yii\base\Component
getBehaviors() 返回附加到此组件的所有行为. yii\base\Component
getDynamicContents() 返回当前活动的动态内容类实例的列表. yii\base\View
getDynamicPlaceholders() 返回动态内容的占位符列表. yii\base\View
getViewFile() yii\base\View
hasEventHandlers() 返回一个值, 指示是否有任何处理程序附加到指定的事件. yii\base\Component
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\Component
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\Component
init() 初始化视图组件. yii\base\View
off() 从该组件分离现有的事件处理程序. yii\base\Component
on() 将事件处理程序附加到事件. yii\base\Component
popDynamicContent() 从当前活动的动态内容类实例列表中删除支持动态内容的最后一个类实例. yii\base\View
pushDynamicContent() 将支持动态内容的类实例添加到当前活动的动态内容类实例列表的末尾 yii\base\View
render() 渲染视图. yii\base\View
renderDynamic() 渲染给定的 PHP 语句返回的动态内容. yii\base\View
renderFile() 渲染一个视图文件. yii\base\View
renderPhpFile() 将视图文件渲染为 PHP 脚本. yii\base\View
setDynamicPlaceholders() 设置动态内容的占位符列表. yii\base\View
trigger() 触发事件. yii\base\Component

受保护的方法

隐藏继承的方法

方法描述定义在
findViewFile() 根据给定的视图名称查找视图文件. yii\base\View
getRequestedViewFile() yii\base\View

事件

隐藏继承的事件

事件类型描述定义在
EVENT_AFTER_RENDER yii\base\ViewEvent 在渲染视图文件之后立即由 renderFile() 触发的事件. yii\base\View
EVENT_BEFORE_RENDER yii\base\ViewEvent 在渲染视图文件之前由 renderFile() 触发的事件. yii\base\View
EVENT_BEGIN_PAGE yii\base\Event 一个由 beginPage() 触发的事件. yii\base\View
EVENT_END_PAGE yii\base\Event 一个由 endPage() 触发的事件. yii\base\View

属性详情

$blocks public 属性

一个命名输出块的列表. 键是块名称, 值是相应的块内容. 你可以调用 beginBlock()endBlock() 来捕获视图的小碎片. 它们以后可以通过此属性在其它地方访问.

public array $blocks null
$cacheStack public 属性
弃用 自 2.0.14. 请勿直接使用此属性. 改为使用方法 getDynamicContents(), pushDynamicContent(), popDynamicContent().

当前活动的动态内容类实例的列表. 该属性在内部用于实现动态内容缓存功能. 不要直接修改它.

$context public 属性

在其中调用 renderFile() 方法的上下文.

$defaultExtension public 属性

默认的视图文件扩展名. 如果它们没有文件扩展名, 这将被附加到视图文件名称.

public string $defaultExtension 'php'
$dynamicContents public 只读 属性 (可用自版本: 2.0.14)

支持动态内容的类实例.

$dynamicPlaceholders public 属性
弃用 子 2.0.14. 请勿直接使用此属性. 改为使用方法 getDynamicPlaceholders(), setDynamicPlaceholders(), addDynamicPlaceholder().

嵌入动态内容的占位符列表. 该属性在内部用于实现内容缓存功能. 不要直接修改它.

$params public 属性

在视图模板之间共享的自定义参数.

public array $params = []
$renderers public 属性

可用的渲染器列表, 这些渲染器由其对应的受支持文件扩展名索引.

每个渲染器可以是视图渲染器对象或用于创建渲染器对象的配置.

例如, 以下配置启用 Smarty 和 Twig 视图渲染器(使用前请安装 SmartyTwig 扩展):

[
    'tpl' => ['class' => 'yii\smarty\ViewRenderer'],
    'twig' => ['class' => 'yii\twig\ViewRenderer'],
]

如果给定的视图文件没有可用的渲染器, 则该视图文件将被视为普通的PHP, 并通过 renderPhpFile() 渲染.

public array $renderers null
$theme public 属性

主题对象或用于创建主题对象的配置. 如果未设置, 则表示主题未启用.

$viewFile public 属性

当前正在渲染的视图文件. 如果未渲染任何视图文件, 则为false. 该属性是只读的.

public string|boolean $viewFile null

方法详情

addDynamicPlaceholder() public 方法

为动态内容添加一个占位符.

此方法在内部用于实现内容缓存功能.

public void addDynamicPlaceholder ( $placeholder, $statements )
$placeholder
$statements string

用于生成动态内容的 PHP 语句.

afterRender() public 方法

此方法在 renderFile() 渲染视图文件后立即调用.

默认实现将触发 EVENT_AFTER_RENDER 事件. 如果你重写此方法, 请确保先调用父实现.

public void afterRender ( $viewFile, $params, &$output )
$viewFile string

正在渲染的视图文件.

$params array

传递给 render() 方法的参数数组.

$output string

视图文件的渲染结果. 此参数的更新将被传回并由 renderFile() 返回.

beforeRender() public 方法

此方法在 renderFile() 渲染视图文件之前调用.

默认实现将触发 EVENT_BEFORE_RENDER 事件. 如果你重写此方法, 请确保先调用父实现.

public boolean beforeRender ( $viewFile, $params )
$viewFile string

要渲染的视图文件.

$params array

传递给 render() 方法的参数数组.

return boolean

是否继续渲染视图文件.

beginBlock() public 方法

开始录制一个数据块.

此方法是开始 yii\widgets\Block 的快捷方式.

使用示例:

// 首先, 在内容视图中定一个或多个数据块
$this->beginBlock('block1');
...content of block1...
$this->endBlock();

// 然后, 在布局视图中, 数据块可用的话会渲染数据块, 如果数据块未定义则显示一些默认内容.
if (isset($this->blocks['block1'])){
    echo $this->blocks['block1'];
}else{
    echo '';  // default content for block1
}
public yii\widgets\Block beginBlock ( $id, $renderInPlace false )
$id string

数据块ID.

$renderInPlace boolean

是否渲染数据块内容. 默认为false, 表示捕获的数据块内容将不会显示.

return yii\widgets\Block

Block 小部件实例.

beginCache() public 方法

开始片段缓存.

如果可用, 该方法将显示缓存的内容. 如果不可用, 它将开始缓存, 并期望调用 endCache() 来结束缓存并将内容保存到缓存中.

片段缓存的典型用法如下:

if ($this->beginCache($id)) {
    // ...generate content here
    $this->endCache();
}
public boolean beginCache ( $id, $properties = [] )
$id string

标识要缓存的片段的唯一ID.

$properties array

yii\widgets\FragmentCache 的初始属性值.

return boolean

是否应生成要缓存的内容. 如果缓存的版本可用, 则为'false'.

beginContent() public 方法

开始渲染将由指定的视图进行装饰的内容.

Info: 该方法可以用于实现嵌套布局.

例如, 可以将一个布局嵌入指定为'@app/views/layouts/base.php'的另一个布局文件中, 如下所示:

<?php $this->beginContent('@app/views/layouts/base.php'); ?>
//...layout content here...
<?php $this->endContent(); ?>

参见 yii\widgets\ContentDecorator.

public yii\widgets\ContentDecorator beginContent ( $viewFile, $params = [] )
$viewFile string

该视图文件将用于装饰此小部件所包含的内容. 这可以指定为视图文件路径或 路径别名.

$params array

要提取并在装饰视图中可用的变量(name => value).

return yii\widgets\ContentDecorator

ContentDecorator 小部件实例.

beginPage() public 方法

标记页面的开始.

public void beginPage ( )
endBlock() public 方法

结束录制一个数据块.

public void endBlock ( )
endCache() public 方法

结束片段缓存.

public void endCache ( )
endContent() public 方法

结束内容的呈现.

public void endContent ( )
endPage() public 方法

标记页面的结尾.

public void endPage ( )
evaluateDynamicContent() public 方法

计算给定的 PHP 语句.

此方法主要在内部用于实现动态内容功能.

public mixed evaluateDynamicContent ( $statements )
$statements string

要计算的 PHP 语句.

return mixed

PHP 语句的返回值.

findViewFile() protected 方法

根据给定的视图名称查找视图文件.

protected string findViewFile ( $view, $context null )
$view string

视图文件的视图名称或 路径别名. 关于如何指定此参数, 请参阅 render().

$context object

要分配给视图的上下文, 以后可以通过视图中的 $context 访问. 如果context实现了 yii\base\ViewContextInterface, 它也可以用于查找与相对视图名称对应的视图文件.

return string

视图文件路径. 请注意, 该文件可能不存在.

throws yii\base\InvalidCallException

如果在没有活动上下文的情况下给出相对视图名称, 则无法确定相应的视图文件.

getDynamicContents() public 方法 (可用自版本: 2.0.14)

返回当前活动的动态内容类实例的列表.

public yii\base\DynamicContentAwareInterface[] getDynamicContents ( )
return yii\base\DynamicContentAwareInterface[]

支持动态内容的类实例.

getDynamicPlaceholders() public 方法

返回动态内容的占位符列表.

此方法在内部用于实现内容缓存功能.

public array getDynamicPlaceholders ( )
return array

占位符列表.

getRequestedViewFile() protected 方法 (可用自版本: 2.0.16)

protected string|boolean getRequestedViewFile ( )
return string|boolean

当前正在渲染的视图文件. 如果未渲染任何视图文件, 则为false.

getViewFile() public 方法

public string|boolean getViewFile ( )
return string|boolean

当前正在渲染的视图文件. 如果未渲染任何视图文件, 则为false.

init() public 方法

初始化视图组件.

public void init ( )
popDynamicContent() public 方法 (可用自版本: 2.0.14)

从当前活动的动态内容类实例列表中删除支持动态内容的最后一个类实例.

public void popDynamicContent ( )
pushDynamicContent() public 方法 (可用自版本: 2.0.14)

将支持动态内容的类实例添加到当前活动的动态内容类实例列表的末尾

public void pushDynamicContent ( yii\base\DynamicContentAwareInterface $instance )
$instance yii\base\DynamicContentAwareInterface

支持动态内容的类实例.

render() public 方法

渲染视图.

可以使用以下格式之一指定要渲染的视图:

  • 路径别名 (eg. @app/views/site/index);
  • 应用程序中的绝对路径(eg. //site/index): 视图名称以双斜杠开始. 实际的视图文件将在应用程序的 视图路径 下查找.
  • 当前模块中的绝对路径(eg. /site/index): 视图名称以单斜杠开始. 实际的视图文件将在 当前模块视图路径 下查找.
  • 相对视图(eg. index): 视图名称不以@/开头. 相应的视图文件将在视图$context视图路径 下查找. 如果未给出$context, 它将在包含当前正在渲染的视图的目录下查找(即, 在另一个视图内渲染视图时发生这种情况).

参见 renderFile().

public string render ( $view, $params = [], $context null )
$view string

视图名称.

$params array

将提取并在视图文件中可用的参数(name-value 对).

$context object

要分配给视图的上下文, 以后可以通过视图中的 $context 访问. 如果context实现了 yii\base\ViewContextInterface, 它也可以用于查找与相对视图名称对应的视图文件.

return string

渲染结果.

throws yii\base\ViewNotFoundException

如果视图文件不存在.

throws yii\base\InvalidCallException

如果无法解析视图.

renderDynamic() public 方法

渲染给定的 PHP 语句返回的动态内容.

当不应缓存部分内容(称为动态内容)时, 此方法主要与内容缓存(片段缓存和页面缓存)一起使用.

动态内容必须由一些 PHP 语句返回.

参见 https://github.com/yiisoft/yii2/issues/17673.

public string renderDynamic ( $statements )
$statements string

用于生成动态内容的 PHP 语句.

return string

动态内容的占位符; 或者如果当前没有活动内容缓存, 则为动态内容.

Note: 大多数间接修改布局的方法(eg, registerJS()registerJSFile())不适用于动态渲染.

renderFile() public 方法

渲染一个视图文件.

如果启用了 $theme(非null), 只要视图文件可用, 它就会尝试渲染视图文件的主题版本.

该方法将调用 yii\helpers\FileHelper::localize() 来本地化视图文件.

如果 renderer 被启用(非null), 该方法将使用它来渲染视图文件. 否则, 它将仅将视图文件包含为普通的PHP文件, 捕获其输出并将其作为字符串返回.

public string renderFile ( $viewFile, $params = [], $context null )
$viewFile string

视图文件.这可以是绝对文件路径或它的别名.

$params array

将在视图文件中提取并使其可用的参数(name-value 对).

$context object

视图应该用于渲染视图的上下文. 如果为null, 则将使用现有的 $context.

return string

渲染结果.

throws yii\base\ViewNotFoundException

如果视图文件不存在.

renderPhpFile() public 方法

将视图文件渲染为 PHP 脚本.

该方法将视图文件视为 PHP 脚本并包含该文件. 它提取给定的参数, 并使它们在视图文件中可用. 该方法捕获包含的视图文件的输出, 并将其作为字符串返回.

该方法应该主要由视图渲染器或 renderFile() 来调用.

public string renderPhpFile ( $_file_, $_params_ = [] )
$_file_ string

视图文件.

$_params_ array

将提取并在视图文件中可用的参数(name-value 对).

return string

渲染结果.

throws Exception
throws \Throwable
setDynamicPlaceholders() public 方法

设置动态内容的占位符列表.

此方法在内部用于实现内容缓存功能.

public void setDynamicPlaceholders ( $placeholders )
$placeholders array

占位符列表.

事件详情

EVENT_AFTER_RENDER 事件类型 yii\base\ViewEvent

在渲染视图文件之后立即由 renderFile() 触发的事件.

EVENT_BEFORE_RENDER 事件类型 yii\base\ViewEvent

在渲染视图文件之前由 renderFile() 触发的事件.

EVENT_BEGIN_PAGE 事件类型 yii\base\Event

一个由 beginPage() 触发的事件.

EVENT_END_PAGE 事件类型 yii\base\Event

一个由 endPage() 触发的事件.