Class yii\web\View

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

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

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

默认情况下, 将 View 配置为 yii\base\Application 中的应用程序组件. 你可以通过Yii::$app->view来访问该实例.

你可以通过在components下的应用程序配置中添加一个数组来修改其配置, 如以下示例所示:

'view' => [
    'theme' => 'app\themes\MyTheme',
    'renderers' => [
        // 你可以在此处添加 Smarty 或 Twig 渲染器
    ]
    // ...
]

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

公共属性

隐藏继承的属性

属性类型描述定义在
$assetBundles yii\web\AssetBundle[] 注册的资源包列表. yii\web\View
$assetManager yii\web\AssetManager 资源管理器. 默认为应用程序assetManager组件. yii\web\View
$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
$css array 注册的 CSS 代码块. yii\web\View
$cssFiles array 注册的 CSS 文件. yii\web\View
$defaultExtension string 默认的视图文件扩展名. yii\base\View
$dynamicContents yii\base\DynamicContentAwareInterface[] 支持动态内容的类实例. yii\base\View
$dynamicPlaceholders array 嵌入动态内容的占位符列表. yii\base\View
$js array 注册的 JS 代码块. yii\web\View
$jsFiles array 注册的 JS 文件. yii\web\View
$linkTags array 注册的链接标签(link). yii\web\View
$metaTags array 注册的元标签(meta). yii\web\View
$params array 在视图模板之间共享的自定义参数. yii\base\View
$renderers array 可用的渲染器列表, 这些渲染器由其对应的受支持文件扩展名索引. yii\base\View
$theme yii\base\Theme|array|string 主题对象或用于创建主题对象的配置. yii\base\View
$title string 页面的标题. yii\web\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
beginBody() 标记 HTML body 部分的开头. yii\web\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
clear() 清除已注册的元标签(meta), 链接标签(link), css/js 脚本和文件. yii\web\View
detachBehavior() 从组件中分离一个行为. yii\base\Component
detachBehaviors() 分离组件中的所有行为. yii\base\Component
endBlock() 结束录制一个数据块. yii\base\View
endBody() 标记 HTML body 部分的结尾. yii\web\View
endCache() 结束片段缓存. yii\base\View
endContent() 结束内容的呈现. yii\base\View
endPage() 标记 HTML 页面的结尾. yii\web\View
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件. yii\base\Component
evaluateDynamicContent() 计算给定的 PHP 语句. yii\base\View
getAssetManager() 注册此视图对象正在使用的资源管理器. yii\web\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
head() 标记 HTML head 部分的位置. yii\web\View
init() 初始化视图组件. yii\base\View
off() 从该组件分离现有的事件处理程序. yii\base\Component
on() 将事件处理程序附加到事件. yii\base\Component
popDynamicContent() 从当前活动的动态内容类实例列表中删除支持动态内容的最后一个类实例. yii\base\View
pushDynamicContent() 将支持动态内容的类实例添加到当前活动的动态内容类实例列表的末尾 yii\base\View
registerAssetBundle() 注册指定的资源包. yii\web\View
registerCsrfMetaTags() 注册 CSRF 元标签. yii\web\View
registerCss() 注册一个 CSS 代码块. yii\web\View
registerCssFile() 注册一个 CSS 文件. yii\web\View
registerJs() 注册一个 JS 代码块. yii\web\View
registerJsFile() 注册一个 JS 文件. yii\web\View
registerJsVar() 注册定义变量的 JS 代码块. yii\web\View
registerLinkTag() 注册一个链接标签(link). yii\web\View
registerMetaTag() 注册一个元标签(meta). yii\web\View
render() 渲染视图. yii\base\View
renderAjax() 渲染视图以响应 AJAX 请求. yii\web\View
renderDynamic() 渲染给定的 PHP 语句返回的动态内容. yii\base\View
renderFile() 渲染一个视图文件. yii\base\View
renderPhpFile() 将视图文件渲染为 PHP 脚本. yii\base\View
setAssetManager() 设置资源管理器. yii\web\View
setDynamicPlaceholders() 设置动态内容的占位符列表. yii\base\View
trigger() 触发事件. yii\base\Component

受保护的方法

隐藏继承的方法

方法描述定义在
findViewFile() 根据给定的视图名称查找视图文件. yii\base\View
getRequestedViewFile() yii\base\View
registerAssetFiles() 注册由资源包提供的所有文件, 包括相关依赖包文件. yii\web\View
renderBodyBeginHtml() 渲染要在 body 部分开头插入的内容. yii\web\View
renderBodyEndHtml() 渲染要在 body 部分末尾插入的内容. yii\web\View
renderHeadHtml() 渲染要插入 head 部分的内容. yii\web\View

事件

隐藏继承的事件

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

常量

隐藏继承的常量

常量描述定义在
PH_BODY_BEGIN '' 在内部用作占位符, 以接收为 body 正文部分的开头注册的内容. yii\web\View
PH_BODY_END '' 在内部用作占位符, 以接收为 body 正文部分的结尾注册的内容. yii\web\View
PH_HEAD ' ' 在内部用作占位符, 以接收为 head 部分注册的内容. yii\web\View
POS_BEGIN 2 注册的 JavaScript 代码块或文件的位置. 这意味着位置在 body 部分的开头. yii\web\View
POS_END 3 注册的 JavaScript 代码块或文件的位置. 这意味着位置在 body 部分的末尾. yii\web\View
POS_HEAD 1 注册的 JavaScript 代码块或文件的位置. 这意味着位置在 head 部分. yii\web\View
POS_LOAD 5 注册的 JavaScript 代码块的位置. 这意味着 JavaScript 代码块将被包含在`jQuery(window).load()`中. yii\web\View
POS_READY 4 注册的 JavaScript 代码块的位置. 这意味着 JavaScript 代码块将被包含在jQuery(document).ready()中. yii\web\View

属性详情

$assetBundles public 属性

注册的资源包列表.

键是包名称, 值是注册的 yii\web\AssetBundle 对象.

参见 registerAssetBundle().

$assetManager public 属性

资源管理器. 默认为应用程序assetManager组件.

$css public 属性

注册的 CSS 代码块.

参见 registerCss().

public array $css = []
$cssFiles public 属性

注册的 CSS 文件.

参见 registerCssFile().

public array $cssFiles = []
$js public 属性

注册的 JS 代码块.

参见 registerJs().

public array $js = []
$jsFiles public 属性

注册的 JS 文件.

参见 registerJsFile().

public array $jsFiles = []
$linkTags public 属性

注册的链接标签(link).

参见 registerLinkTag().

public array $linkTags = []
$metaTags public 属性

注册的元标签(meta).

参见 registerMetaTag().

public array $metaTags = []
$title public 属性

页面的标题.

public string $title null

方法详情

beginBody() public 方法

标记 HTML body 部分的开头.

public void beginBody ( )
clear() public 方法

清除已注册的元标签(meta), 链接标签(link), css/js 脚本和文件.

public void clear ( )
endBody() public 方法

标记 HTML body 部分的结尾.

public void endBody ( )
endPage() public 方法

标记 HTML 页面的结尾.

public void endPage ( $ajaxMode false )
$ajaxMode boolean

视图是否以 AJAX 模式渲染. 如果为true, 则在 POS_READYPOS_LOAD 位置注册的 JS 脚本将像普通脚本一样在视图的末尾渲染.

getAssetManager() public 方法

注册此视图对象正在使用的资源管理器.

public yii\web\AssetManager getAssetManager ( )
return yii\web\AssetManager

资源管理器. 默认为应用程序assetManager组件.

head() public 方法

标记 HTML head 部分的位置.

public void head ( )
registerAssetBundle() public 方法

注册指定的资源包.

所有相关资源包都将被注册.

public yii\web\AssetBundle registerAssetBundle ( $name, $position null )
$name string

资源包的类名称(不带前导反斜杠).

$position integer|null

如果设置, 这将强制 JavaScript 文件的最小位置. 这将调整取决于资源 JavaScript 文件的位置, 如果无法满足要求, 则将失败. 如果为空, 则资源包位置设置将不会更改. 有关 javascript 位置的更多详细信息, 请参阅 registerJsFile().

return yii\web\AssetBundle

注册的资源包实例.

throws yii\base\InvalidConfigException

如果资源包不存在或者检测到循环依赖关系.

registerAssetFiles() protected 方法

注册由资源包提供的所有文件, 包括相关依赖包文件.

一旦文件被注册, 就从 $assetBundles 中移除一个包.

protected void registerAssetFiles ( $name )
$name string

要注册的包的名称.

registerCsrfMetaTags() public 方法 (可用自版本: 2.0.13)

注册 CSRF 元标签.

它们是动态渲染的, 为每个请求检索一个新的 CSRF 令牌.

$view->registerCsrfMetaTags();

上面的代码将注册<meta name="csrf-param" content="[yii\web\Request::$csrfParam]"><meta name="csrf-token" content="tTNpWKpdy-bx8ZmIq9R72...K1y8IP3XGkzZA==">到页面.

Note: 通过调用yii.js中的window.yii.refreshCsrfToken()来自动刷新 ActiveForm 的隐藏 CSRF 输入域.

public void registerCsrfMetaTags ( )
registerCss() public 方法

注册一个 CSS 代码块.

public void registerCss ( $css, $options = [], $key null )
$css string

要注册的 CSS 代码块的内容.

$options array

<style>标签的 HTML 属性.

$key string

标识 CSS 代码块的键. 如果为null, 它将使用$css作为键. 如果两个 CSS 代码块使用相同的键注册, 则后者将覆盖前者.

registerCssFile() public 方法

注册一个 CSS 文件.

该方法应该用于 CSS 文件的简单注册. 如果要使用 yii\web\AssetManager 的功能(例如将时间戳附加到 URL 和文件发布选项), 请改用 yii\web\AssetBundleregisterAssetBundle().

public void registerCssFile ( $url, $options = [], $key null )
$url string

要注册的 CSS 文件.

$options array

链接标记的 HTML 属性. 请参阅 yii\helpers\Html::cssFile() 以获取支持的选项. 以下选项经过特殊处理, 不被视为 HTML 属性:

  • depends: array, 指定此 CSS 文件所依赖的资源包的名称.
  • appendTimestamp: bool 是否在 URL 上附加时时间戳.
$key string

标识 CSS 脚本文件的键. 如果为null, 它将使用$url作为键. 如果两个 CSS 文件使用相同的键注册, 则后者将覆盖前者.

throws yii\base\InvalidConfigException
registerJs() public 方法

注册一个 JS 代码块.

public void registerJs ( $js, $position self::POS_READY, $key null )
$js string

要注册的 JS 代码块.

$position integer

页面中 JS 脚本标签应插入的位置. 可能的值是:

  • POS_HEAD: 在 head 部分.
  • POS_BEGIN: 在 body 部分的开头.
  • POS_END: 在 body 部分的结尾.
  • POS_LOAD: 包含在jQuery(window).load()中. 请注意, 通过使用此位置, 该方法将自动注册 jQuery js 文件.
  • POS_READY: 包含在jQuery(document).ready()中. 这是默认值. 请注意, 通过使用此位置, 该方法将自动注册 jQuery js 文件.
$key string

标识 JS 代码块的键. 如果为null, 它将使用$url作为键. 如果两个 JS 代码块使用相同的键注册, 则后者将覆盖前者.

registerJsFile() public 方法

注册一个 JS 文件.

该方法应用于 JS 文件的简单注册. 如果要使用 yii\web\AssetManager 的功能(例如将时间戳附加到 URL 和文件发布选项), 请改用 yii\web\AssetBundleregisterAssetBundle().

public void registerJsFile ( $url, $options = [], $key null )
$url string

要注册的 JS 文件.

$options array

脚本标签的 HTML 属性. 以下选项经过特殊处理, 不被视为 HTML 属性:

  • depends: array, 指定此 JS 文件所依赖的资源包的名称.
  • position: 指定应在页面中插入 JS 脚本标记的位置. 可能的值有:
  • appendTimestamp: bool 是否在 URL 上附加时时间戳.

其他支持的选项请参考 yii\helpers\Html::jsFile().

$key string

标识 JS 文件的键. 如果为null, 它将使用$url作为键. 如果两个 JS 文件使用相同的键注册, 则后者将覆盖前者. 请注意, 位置选项优先, 因此使用相同键注册但位置选项不同的文件不会覆盖.

throws yii\base\InvalidConfigException
registerJsVar() public 方法 (可用自版本: 2.0.14)

注册定义变量的 JS 代码块.

变量的名称将用作键, 以防止重复的变量名称.

public void registerJsVar ( $name, $value, $position self::POS_HEAD )
$name string

变量的名称.

$value array|string

变量的值.

$position integer

页面中应插入 JavaScript 变量的位置. 可能的值是:

  • POS_HEAD: 在 head 部分. 这是默认值.
  • POS_BEGIN: 在 body 部分的开头.
  • POS_END: 在 body 部分的结尾.
  • POS_LOAD: 包含在jQuery(window).load()中. 请注意, 通过使用此位置, 该方法将自动注册 jQuery js 文件.
  • POS_READY: 包含在jQuery(document).ready()中. 请注意, 通过使用此位置, 该方法将自动注册 jQuery js 文件.
registerLinkTag() public 方法

注册一个链接标签(link).

例如, 可以添加一个自定义 favicon 链接标签, 如下所示:

$view->registerLinkTag(['rel' => 'icon', 'type' => 'image/png', 'href' => '/myicon.png']);

将会注册 HTML: <link rel="icon" type="image/png" href="/myicon.png">.

Note:要注册 CSS 样式表的链接标签, 请改用 registerCssFile(), 它为此类链接标签提供了更多的选项.

public void registerLinkTag ( $options, $key null )
$options array

链接标签(link)的 HTML 属性.

$key string

标识链接标签(link)的键. 如果两个链接标签(link)使用相同的键注册, 则后者将覆盖前者. 如果它为null, 新的链接标签(link)将被追加到现有的标签后.

registerMetaTag() public 方法

注册一个元标签(meta).

例如, 可以添加一个描述元标签(meta), 如下所示:

$view->registerMetaTag([
    'name' => 'description',
    'content' => 'This website is about funny raccoons.'
]);

将会渲染元标签(meta)<meta name="description" content="This website is about funny raccoons.">.

public void registerMetaTag ( $options, $key null )
$options array

元标签(meta)的 HTML 属性.

$key string

标识元标签(meta)的键. 如果使用相同的键注册了两个元标签(meta), 则后者将覆盖前者. 如果它为null, 新的元标签(meta)将被追加到现有的标签后.

renderAjax() public 方法

渲染视图以响应 AJAX 请求.

该方法与 render() 类似, 不同之处在于它将用 beginPage(), head(), beginBody(), endBody()endPage() 来渲染视图.

通过这样做, 该方法可以将 JS/CSS 脚本和在视图中注册的文件注入渲染结果中.

参见 render().

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

视图名称. 有关如何指定此参数, 请参考 render().

$params array

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

$context object

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

return string

渲染结果.

renderBodyBeginHtml() protected 方法

渲染要在 body 部分开头插入的内容.

使用注册的 JS 代码块和文件来渲染内容.

protected string renderBodyBeginHtml ( )
return string

渲染的内容.

renderBodyEndHtml() protected 方法

渲染要在 body 部分末尾插入的内容.

使用注册的 JS 代码块和文件来渲染内容.

protected string renderBodyEndHtml ( $ajaxMode )
$ajaxMode boolean

视图是否以 AJAX 模式呈现. 如果为true, 则在 POS_READYPOS_LOAD 位置注册的 JS 脚本将像普通脚本一样在视图的末尾渲染.

return string

渲染的内容.

renderHeadHtml() protected 方法

渲染要插入 head 部分的内容.

使用注册的元标记(meta), 链接标记(link), CSS/JS 代码块和文件来渲染内容.

protected string renderHeadHtml ( )
return string

渲染的内容.

setAssetManager() public 方法

设置资源管理器.

public void setAssetManager ( $value )
$value yii\web\AssetManager

资源管理器.

事件详情

EVENT_BEGIN_BODY 事件类型 \yii\web\Event

beginBody() 触发的事件.

EVENT_END_BODY 事件类型 \yii\web\Event

endBody() 触发的事件.